C# 使用PrivateObject.Invoke调用静态转换函数不在C中编译

C# 使用PrivateObject.Invoke调用静态转换函数不在C中编译,c#,unit-testing,privateobject.invoke,C#,Unit Testing,Privateobject.invoke,我有一个测试方法,我调用一个私有函数,将一种类型转换为另一种类型 此静态函数具有以下签名: private static Destiny[] Array2Array<Origin,Destiny> (Origin[] OriginVector) 编辑:最后一行抛出编译器错误,消息为无法将类型对象转换为Destiny[]。我做错了什么?克里斯·肖恩先生 我将在这里复制你给我的解决方案。因为你删除了你的答案,如果你在这之后添加了一个新的答案,我会删除这个并接受你的答案 上面代码的问题是

我有一个测试方法,我调用一个私有函数,将一种类型转换为另一种类型

此静态函数具有以下签名:

private static Destiny[] Array2Array<Origin,Destiny> (Origin[] OriginVector)
编辑:最后一行抛出编译器错误,消息为无法将类型对象转换为Destiny[]。我做错了什么?

克里斯·肖恩先生

我将在这里复制你给我的解决方案。因为你删除了你的答案,如果你在这之后添加了一个新的答案,我会删除这个并接受你的答案

上面代码的问题是,实际变量的类型是Destiny[],调用的结果是System.Object。需要类型转换:

actual = (Destiny[]) po.Invoke("Array2Array", 
         new [] { typeof(Origin[]), typeof(Destiny[]) }, 
         new object[] { OriginVector } );

答案很简单。。投吧D

actual = (Destiny[]) po.Invoke("Array2Array", 
     new [] { typeof(Origin[]), typeof(Destiny[]) }, 
     new object[] { OriginVector } );

这里发生了什么事?Shain先生?您可以考虑使用程序集属性,而不是使用调用方法。这会让你的考试更干净。@MatthiasKoch:解决问题的人删除了他的答案?!?!?!?在我把它标记为已接受之前。但是属性很好,是什么解决的?我没有注意到其他答案。他在发帖后几秒钟就删除了他的答案-我在发帖时被警告说答案被删除了!!!哦。。。我以为你没有犯这个错误?!因为您说过它不会编译时出错..:/我同意,它可以用更好的措辞:它不编译,带有blabla错误消息。无论如何,我编辑了它,希望这次更清晰-
actual = (Destiny[]) po.Invoke("Array2Array", 
     new [] { typeof(Origin[]), typeof(Destiny[]) }, 
     new object[] { OriginVector } );