0

ある種類を別の種類に変換するプライベート関数を呼び出すテストメソッドがあります。

この静的関数には、次のシグネチャがあります。

private static Destiny[] Array2Array<Origin,Destiny> (Origin[] OriginVector)

これはプライベート関数であるため、テスターはアクセスできないというエラーを出します。だから私はこの点に到達しました:

Origin[] OriginVector = null; // TODO: Initialize to an appropriate value
Destiny[] expected = null; // TODO: Initialize to an appropriate value
Destiny[] actual;
var dummy = new ConversionClass();
var po = new PrivateObject( dummy, new PrivateType(typeof(ConversionClass)));
var acessor = new ConversionClassAcessor(po);

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

編集:その最後の行は、「タイプオブジェクトをDestiny[]に変換できません」というメッセージとともにコンパイラエラーをスローします。私が間違っているのは何ですか?

4

2 に答える 2

0

クリス・シェイン氏、

ここで、あなたが私にくれた解決策を再現します。回答を削除したので、この後に新しい回答を追加すると、これを削除して、質問の回答として受け入れます。


上記のコードの問題は、actual変数が型Destiny[]であり、Invokeの結果がSystem.Objectであるということです。型キャストが必要です:

actual = (Destiny[]) po.Invoke("Array2Array", 
         new [] { typeof(Origin[]), typeof(Destiny[]) }, 
         new object[] { OriginVector } );
于 2011-12-22T22:04:01.120 に答える
0

答えは簡単です..それをキャストします。:D

actual = (Destiny[]) po.Invoke("Array2Array", 
     new [] { typeof(Origin[]), typeof(Destiny[]) }, 
     new object[] { OriginVector } );
于 2011-12-22T22:10:15.317 に答える