私は、種類を別の種類に変換する専用関数を呼び出すテストメソッドがあります。PrivateObject.Invokeを使用して静的変換関数を呼び出すと、C#でコンパイルされません。
この静的関数は、次のシグネチャがあります。
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 });
EDITは:最後の行がメッセージでコンパイルエラーをスローする「[]運命に型オブジェクトを変換することはできません」。私は間違っているの?
ここでは何が起こりましたか?シェインさん? –
'Invoke'メソッドの代わりに、アセンブリ属性[' InternalsVisibleTo'](http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute.aspx)の使用を検討することができます。あなたのテストをもっときれいにするでしょう。 – Matthias
@MatthiasKoch:質問を解決した人**は彼のアンカーを削除しました(?!?!?!)。しかし属性は素晴らしいです。 –