我是 C# 的新手(上周开始),所以对我保持冷静 ;)。 我想知道我是否可以以某种方式编写自定义属性,让我解释一下:
我有一些部分类是通过添加属性来完成的,但是所有 getter 和 setter 的模式都是相同的,所以我想分解一下:
public partial class Travel
{
public String TravelName
{
get
{
return LocaleHelper.GetRessource(Ressource1);
}
set
{
if (this.Ressource1 == null)
Ressource1 = new Ressource() { DefaultValue = value };
else
Ressource1.DefaultValue = value;
}
}
public String TravelDescription
{
get
{
return LocaleHelper.GetRessource(Ressource2);
}
set
{
if (this.Ressource2 == null)
Ressource2 = new Ressource() { DefaultValue = value };
else
Ressource2.DefaultValue = value;
}
}
}
如您所见,唯一发生变化的是 Ressource1/Ressource2。 我的目标是能够写出类似这样的东西:
public partial class Travel
{
public LocalizedString TravelName(Ressource1);
public LocalizedString TravelDescription(Ressource2);
}
任何人有做这个的想法,或让我的代码更清晰的其他想法? 谢谢,
纪尧姆
最佳答案
在 C# 或 .NET 本身中没有执行此操作的工具,但如果您正在执行大量此类操作,则可能值得通过 postsharp 研究面向方面的编程。 .基本上它将允许您定义一个属性,该属性会导致在编译时注入(inject)额外的代码。您键入的代码类似于:
public partial class Travel
{
[LocalizedProperty(source = "Ressource1")
public string TravelName { get; set; }
[LocalizedProperty(source = "Ressource2")
public string TravelDescription{ get; set; }
}
并且在编译时,PostSharp 将使用您在新的 LocalizedPropertyAttribute 类中定义的模板替换该属性。
关于c# - 是否有可能 "extend"属性 "class"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1410916/