索引器获取和设置不同的类型

本文关键字:类型 设置 获取 索引 | 更新日期: 2023-09-27 18:31:36

我在 C# 中使用索引器时遇到问题。作为要求,我必须实现索引器。此索引器必须接受值(设置)泛型类型<T>并返回 (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] ...,但没有一个产生预期的结果。感谢您的任何帮助。

索引器获取和设置不同的类型

隐式运算符可以帮到你。首先,我们应该定义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"
}