【发布时间】:2011-05-13 23:21:37
【问题描述】:
我有一个多语言系统,而且我在每个类中到处都有我称之为“包装器属性”的东西,例如:
Public Property Name(Optional ByVal ForceLanguageCode As String = Nothing) As String
Get
Return Translations.GetByCode(Me.EntityID, "name", ForceLanguageCode)
End Get
Set(ByVal value As String)
Translations.SetByCode(Me.EntityID, "name", value, ForceLanguageCode)
End Set
End Property
然后我会为每个可翻译字段复制并粘贴该代码。
我希望能够以某种方式用一行代码替换它,用一个类。每次唯一变化的就是字段的名称,比如“名称”、“标题”或“主题”等。这似乎有点浪费,我希望我的系统像这样易于使用开发人员可以使用。
我对属性进行了一些研究,但我认为这不是我的答案:
1) 我不知道如何自动实例化对象,特别是因为这是扩展一个 LINQ 实体,其中 New() 签名已经由 DBML 生成。我目前的技术使用静态函数。
2) “EntityID”是实时信息,不是编译时信息。
谁能建议我如何收拾这个烂摊子?
【问题讨论】: