2012-07-06 27 views
6

私が知る限り、Visual Studio 2012はプライベートアクセサをサポートしていません。可能な選択肢に関する情報をいくつか教えてもらえますか? PrivateObject.Invoke()は私にとって最善の解決策ではありません。Visual Studio 2012のプライベートアクセサリー

ありがとうございます!

答えて

7

メンバーを「内部」としてマークし、InternalsVisibleTo属性を使用します。シンプルで使い勝手の良いタイプです。

+0

私はPrivat eAccessorsが導入される前にこれを行っています。ありがとう! – llasarov

+0

多くの.NET FrameworkアセンブリがReflectorのInternalsVisibleTo属性を示しているのは興味深いことです。 – bryanbcook

+0

Fakesフレームワークに問題があるようです。 InternalsVisibleToが正しく設定されていても、内部クラスをシムできません。 PrivateObject.Invokeは実際にはオプションでもありません。残念なことに、アクセサーのサポートを削除する際に、内部クラスをシミングするための方法の1つを削除しました。 – Finster

0

多分、この投稿はHome-made Private Accessor for Visual Studio 2012+で、あなた自身のプライベートアクセサを作成するのに役立ちます。

よろしく、

ステファン

+2

MSDNフォーラムのAxel MayerによるコマンドラインツールPublicize.exe(http://msdn.microsoft.com/en-us/library/dd569957%28v=vs.100%29.aspx)のヒントが見つかりました(http: //social.msdn.microsoft.com/Forums/en-US/015e1ac7-acf3-4d83-ae0c-734c8957cde4/how-to-create-private-accessors-in-vs-2012?forum=vsunittest)。 VS 2012とVS 2013(Ultimate)で見つけました。 .NET 4.0と.NET 4.5では動作しましたが、Windowsストアアプリケーションでは動作しませんでした。 %Program Files(x86)%\ Microsoft Visual Studio 11.0 \ Common7 \ IDEを見てください。 ツールは、ユニットテストプロジェクトで使用できるdllを作成します。アクセサーを自分で書くよりも良い;-) – Stefan

0

私はnugetパッケージChaining Assertion for MSTestの一部であり、私はそれでかなり満足していダイナミックプライベートアクセサ機能を使用して開始しました。 1つは強い型付けを失いますが、少なくとも構文は判読可能です。 ダイナミックの機能で動作します。他のテストフレームワーク用のパッケージもあります。 テストコードは次のようになります。

var target = CreateMyObjectUnderTest(); 
dynamic dynamicTarget = target.AsDynamic(); 
Assert.AreEqual("abc", dynamicTarget.MyPrivateProperty); 
Assert.AreEqual("xyz", dynamicTarget.PrivateMethod(123)); 
関連する問題