【发布时间】:2020-04-07 14:20:42
【问题描述】:
:)
我正在寻找几个月前在一个项目中看到的东西。我不知道他们使用什么,我很想知道它是如何工作的,但我不知道如何搜索它……我现在正在 6 个小时内寻找它……你能帮我吗提高我的知识? :D
数据库:
|id |key |en |fr |
|1 |TheNameOfTheKey |Hello |Bonjour |
|2 |TheNameOfTheKey2|Hello2 |Bonjour2 |
代码:
String s1 = Singleton.Instance.Translation.TheNameOfTheKey
String s2 = Singleton.Instance.Translation.TheNameOfTheKey2
// this key don't exist in Db but return his name instead
String s3 = Singleton.Instance.Translation.AnotherKeyNotInDb
// Results
// s1 = "Hello"
// s2 = "Hello2"
// s3 = "AnotherKeyNotInDb"
我的问题:
翻译的类型是什么?如果你有文档,我会看看!
看起来像我正在寻找的东西是:ExpandoObject
提前谢谢你!
【问题讨论】:
-
这看起来像是某种全球化解决方案。你可能想搜索一下。
-
1.如果数据库中没有键与查询匹配,则返回的代码中可能指定了一个默认值。 2. ExpandoObject 只是一个对象,其成员可以在运行时动态添加/删除/更改。我看不出它与你的问题有什么联系。
-
我想你要找的是DynamicObject
-
我已经在寻找 ASP 全球化,但它与我过去使用的不一样。我不知道这种语法.. MyObject.NameOfTheKey 返回值或他的名字
-
Singleton.Instance.Translation可能是扩展 DynamicObject 并覆盖TryGetMember()并检查给定名称(在代码中您将其视为属性,但它实际上是在活页夹中传递给 TryGetMember()如binder.Name) 作为数据库中的键存在。如果键不存在,则返回键名。
标签: c# list translation key-value expandoobject