抽象类的IndexerName属性

Ste*_*ana 5 c# inheritance attributes

我正在尝试使用我的抽象类上的IndexerName属性重命名我的索引器属性.但它仍显示编译错误类型"XXX"已包含"项目"的定义.

抽象类:

public abstract class MyAbstract
{
    [IndexerName("Indexer")]
    public abstract string this[string propertyName]
    {
        get;
    }
}
Run Code Online (Sandbox Code Playgroud)

具体类:

public class MyConcrete : MyAbstract
{
    string item;

    public string Item
    {
        get { return item; }
        set { item = value; }
    }

    public override string this[string propertyName]
    {
        get { return propertyName; }
    }
}
Run Code Online (Sandbox Code Playgroud)

编译错误:

"MyConcrete"类型已经包含"Item"的定义.

我试图将IndexerName放在索引器覆盖上,它显示错误"无法在标记为覆盖的索引器上设置IndexerName属性"

如何在抽象类上使用IndexerName?

提前致谢.

Jal*_*aid 2

Item如果您只需将其重命名为其他名称,该问题就会得到解决,另请考虑IndexerName此处此处检查此相关问题。

  • @Jalal 别介意..微软使用像“Item”这样的常用词来定义自动属性——”这很糟糕。 (2认同)