Свойство 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 ответ

Мне не нравится это из-за дублирования:

  1. Вы должны указать Type2 в двух точках,
  2. Вы должны указать PropName в двух пунктах.

Таким образом, рефакторинг может быть немного сложным. Как насчет следующего подхода?

module MExtension
{
  property PropName(this arg : Type1) : Type2
  {
    get
    {
      ...
    }
    set
    {
      ... = value
    }
  }
}

или даже автопринадлежность

module MExtension
{
  property PropName(this arg : Type1) : Type2 { get; set; }
}
Другие вопросы по тегам