将MyClass <t>转换为MyClass <dynamic>

时间:2017-02-03 19:20:38

标签: c# generics dynamic casting

以下代码无法编译:

public class Test
{
    public void Run()
    {
        List<MyClass<dynamic>> listOfMyClasses = new List<MyClass<dynamic>>();

        MyClass<dynamic> myClass = new MyClass<int>(); // Error here

        listOfMyClasses.Add(myClass);
    }

    public class MyClass<T>
    {
        public void DoSomething() { }
        public void DoSomethingSpecial<T>(T t) { }
    }
}

但是,我认为这在逻辑上是有道理的(如果我弄错了,请告诉我)。据推测它很有用,因为我可以在不知道类型参数的情况下调用DoSomething。如何在列表中添加myClass

1 个答案:

答案 0 :(得分:1)

不使用MyClass<dynamic>列表,只需使用dynamic列表:

    public void Run()
    {
        List<dynamic> listOfMyClasses = new List<dynamic>();

        dynamic myClass = new MyClass<int>();

        listOfMyClasses.Add(myClass);
    }

    public class MyClass<T>
    {
        public void DoSomething() { }
    }