2

最近有一个关于在 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;
  }
}

注意:模块 == 静态类

你怎么看 ?

4

1 回答 1

0

我不喜欢它,因为重复:

  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; }
}
于 2011-12-13T08:54:39.653 回答