Свойство Nemerle Extension
Недавно обсуждался вопрос о добавлении свойства расширения к языку 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;
}
}
Примечание: модуль == статический класс
Как вы думаете?
1 ответ
Мне не нравится это из-за дублирования:
- Вы должны указать Type2 в двух точках,
- Вы должны указать PropName в двух пунктах.
Таким образом, рефакторинг может быть немного сложным. Как насчет следующего подхода?
module MExtension
{
property PropName(this arg : Type1) : Type2
{
get
{
...
}
set
{
... = value
}
}
}
или даже автопринадлежность
module MExtension
{
property PropName(this arg : Type1) : Type2 { get; set; }
}