如何正确使用C#索引器属性

如何正确使用C#索引器属性,c#,wpf,indexing,C#,Wpf,Indexing,我正在接管一个WPF C#团队项目 其中一个类继承自具有此属性的抽象类: [Dynamic] public dynamic this[string key] { get; set; } 我不熟悉这个,但我认为它设置了一个索引器属性类对象 我需要通过向这个索引器添加一个变量来模拟这样一个对象。 我该怎么办? 我期待着这样的事情: this.Add(myKey, myValue); 但编译器强烈反对:) 我应该如何将项目添加到此索引器 thx类上的索引器使实例看起来像是某种数组,

我正在接管一个WPF C#团队项目

其中一个类继承自具有此属性的抽象类:

[Dynamic]
        public dynamic this[string key] { get; set; }
我不熟悉这个,但我认为它设置了一个索引器属性类对象

我需要通过向这个索引器添加一个变量来模拟这样一个对象。 我该怎么办? 我期待着这样的事情:

this.Add(myKey, myValue);
但编译器强烈反对:)

我应该如何将项目添加到此索引器


thx

类上的索引器使实例看起来像是某种数组,由您希望的任何参数设置键,而不仅仅是整数

var existingValue = this["someKey"];
this["someKey"] = newValue;
要实现这个类,您需要执行如下操作

public class Mine : ThatAbstractClass
{
  Dictionary<string, dynamic> IndexerValues = new Dictionary<string, dynamic>();

  public override dynamic this[string key]
  {
    get { return IndexerValues[key]; }
    set { IndexerValues[key] = value; }
  }
}
公共类Mine:ThatAbstractClass
{
字典索引器值=新字典();
公共覆盖动态此[字符串键]
{
获取{返回索引器值[key];}
设置{IndexerValues[key]=value;}
}
}

类上的索引器使实例看起来像是某种数组,由您希望的任何参数设置键,而不仅仅是整数

var existingValue = this["someKey"];
this["someKey"] = newValue;
要实现这个类,您需要执行如下操作

public class Mine : ThatAbstractClass
{
  Dictionary<string, dynamic> IndexerValues = new Dictionary<string, dynamic>();

  public override dynamic this[string key]
  {
    get { return IndexerValues[key]; }
    set { IndexerValues[key] = value; }
  }
}
公共类Mine:ThatAbstractClass
{
字典索引器值=新字典();
公共覆盖动态此[字符串键]
{
获取{返回索引器值[key];}
设置{IndexerValues[key]=value;}
}
}

您到底想在哪个列表中添加值?你在那个类里面有私有列表吗?嗯,我不知道,我只是意识到相关的类被放入了一个外部DLL(我没有访问权限)。但是,出于模拟的目的,我假设我可以派生这个类并重写索引器访问器?因此不能使用默认的
{get;set;}
这不起作用。您必须实现这些方法,并将传递的值添加到某个集合中,否则将丢失它。好的,我为帮助获取了thx:)您到底要将值添加到哪个列表中?你在那个类里面有私有列表吗?嗯,我不知道,我只是意识到相关的类被放入了一个外部DLL(我没有访问权限)。但是,出于模拟的目的,我假设我可以派生这个类并重写索引器访问器?因此不能使用默认的
{get;set;}
这不起作用。您必须实现这些方法,并将传递的值添加到某个集合中,否则将丢失它。好的,我得到了它,谢谢您的帮助:)这正是我要说的。谢谢你扩展你的答案:)没关系。在我看到你的评论(刚才)之前,我实际上扩展了它:)这正是我要说的。谢谢你扩展你的答案:)没关系。在我看到你的评论(刚才)之前,我实际上扩展了它:)