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

时间:2014-11-22 22:04:46

标签: c#

我在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] ...,但没有一个产生预期的结果。谢谢你的帮助。

1 个答案:

答案 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"
}