最近讨论了将扩展属性添加到Nemerle语言的问题。 但语法不清楚。
更新了提议的语法:
module MExtension
{
[ExtensionProperty(string)] public StringProp : int { get; set; }
[ExtensionProperty(int)] public IntProp : string { get { "abc" } }
}
module MTest
{
F() : void
{
def x : int = "ab".StringProp;
"abc".StringProp = 100;
def y : string = 10.IntProp;
}
}
注意:module == static class
您怎么看?
答案 0 :(得分:0)
我不喜欢它因为重复:
因此重构可能会稍微复杂一些。以下方法怎么样?
module MExtension
{
property PropName(this arg : Type1) : Type2
{
get
{
...
}
set
{
... = value
}
}
}
甚至autoproperty:
module MExtension
{
property PropName(this arg : Type1) : Type2 { get; set; }
}