MS Fakesがいくつかのデリゲートプロパティを偽のアセンブリに追加していない彼らはメタデータに現れています。MS FakesエラーCS0117:スタブ[ClassName]に[delegate property name]の定義が含まれていません(メタデータはそこにあります)
私はクラスA
を抽象汎用クラスB<T>
から継承し、インターフェイスIA
を実装しています。 T
を除くすべてが同じ名前空間に定義され、すべてが同じアセンブリ内にあります。
B
メソッド(BMethod
)を有し、IA
はA
に実装されている方法(IAMethod
)を定義します。
私のテストプロジェクトでは、これらのクラス/インタフェースを含むもののための偽のアセンブリを追加しました。フェーズのアセンブリでは、クラスA
のスタブをStubA
として追加するように指定しました。デフォルトでは、IA
をスタブとしてStubIA
とスタブします。 StubA
のインスタンスを作成するとき
私はクラスB
から作成された代表者のすべてに関数定義を割り当てることができますが、私はA
で定義された機能のためのデリゲートプロパティ名を参照してIA
からの契約で必要とすることはできません。 (例:私は参照しStubA.BMethodArgType
を割り当てることができますが、ないStubA.IAMethodArgType
)
私はVS2015でStubA
の定義に移動すると、私はVSが私に語っているプロパティが欠落していることがわかりますが、メタデータであり、実際にしています。
...
public class StubA : A, IStub<A>, IStub, IStubObservable, IPartialStub
{
...
//
// Summary:
// Sets the stub of B`1.BMethod(ArgType arg)
public FakesDelegates.Func<ArgType, ReturnType> BMethodArgType;
//
// Summary:
// Sets the stub of A.IAMethod(ArgType arg)
public FakesDelegates.Func<ArgType, ReturnType> IAMethodArgType;
...
}
...
しかし、私はFakesAssemblies/ProjectName.Fakes.xmlを開いたとき、私はStubA
のために定義されIAMethodArgType
のためのメンバーが表示されていないが、私はStubIA
で定義されたIAMethodArgType
するための部材で、スタブのインタフェースを参照しています。また、Interfaces="false"
属性をProjectName.fakesのAdd
タグに追加すると、ProjectName.Fakes.xmlファイルにはIAMethodArgType
のメンバーが含まれなくなります。
私はエラーCS0117を受け取りましたが、テストプロジェクトをビルドできません。私はすでに私のFakesAssemblyフォルダをクリアして再構築しようとしました。私はすべての偽のアセンブリの参照を削除して、それらを追加しようとしました。私はIAMethod
の実装をしようとしましたvirtual
。何も助けてくれないようです。
誰が何が起こっているのかも知れないのですか、それともどうしてこのようなことが起こるのかを確認することができます。