我在C#中遇到索引器问题。作为要求,我必须实现索引器。此索引器必须接受值(set)泛型类型<T>
和return(get)类型MyClass<T>
。
示例:
class OtherClass<T>{
Dictionary<string, MyClass<T>> dict;
//...
}
class MyClass<T>{
T item;
//...
public void MethodFromMyClass(){
//...
}
}
MyClass<String> mc = new MyClass<String>();
mc["Name"] = "Data";
//Call method from MyClass
mc["Name"].MethodFromMyClass()
我尝试过很多例子。 public object this[string i] ...
,但没有一个产生预期的结果。谢谢你的帮助。
答案 0 :(得分:0)
隐式操作员可以帮助您。首先,我们应该为MyClass
定义隐式运算符:
public class MyClass<T>
{
private readonly T item;
public MyClass(T item)
{
this.item = item;
}
public void PrintItem()
{
Console.WriteLine(item.ToString());
}
public static implicit operator MyClass<T>(T d)
{
return new MyClass<T>(d);
}
}
接下来,我们应该使用DictionaryClass
索引器定义MyClass
:
public class DictionaryClass<T>
{
private readonly Dictionary<string, MyClass<T>> dict;
public DictionaryClass()
{
dict = new Dictionary<string, MyClass<T>>();
}
public MyClass<T> this[string index]
{
get
{
return dict[index];
}
set
{
dict[index] = value;
}
}
}
用法示例:
public void Run()
{
var myDictionary = new DictionaryClass<string>();
myDictionary["Name"] = "Data";
myDictionary["Name"].PrintItem(); // Prints "Data"
}