ArrayTypeMismatchException:无法将源数组类型分配给目标数组类型

时间:2018-01-27 23:44:21

标签: c# unity3d

Unity :2017.3.0f3(在5.x上相同)

我遇到了与这个问题完全相同的问题: Storing list of generic class of derived objects

public interface Animal { void bar(); }
public interface IContainer <out T> where T : Animal { void foo();}
public class Cat : Animal{ void bar(){} }
public class CatContainer : IContainer<Cat>{ void foo(){} }

/* ... */

public void test () {
        List<IContainer<Animal> list= new List<IContainer<Animal>> ();
        list.Add (new CatContainer()); //Error
}

当我将new CatContainer()推入列表时,我遇到了这个例外:

ArrayTypeMismatchException: Source array type cannot be assigned to destination array type.
(wrapper stelemref) object:stelemref (object,intptr,object)

注意:此代码适用于Unity。

你也有这个问题吗?有解决方法吗?

1 个答案:

答案 0 :(得分:1)

我测试了您的代码并发现单声道问题。
您的代码会在Mono .NET 3.5 equivalent上引发异常。但是,它在Mono .NET 4.6 equivalent上运行正常。 转到Player Settings/Other Settings/Configuration/Scripting Runtime Version并将此字段设置为Experimental (.NET 4.6 Equivalent)enter image description here