2017-07-07 11 views
0

MS Fakesがいくつかのデリゲートプロパティを偽のアセンブリに追加していない彼らはメタデータに現れています。MS FakesエラーCS0117:スタブ[ClassName]に[delegate property name]の定義が含まれていません(メタデータはそこにあります)

私はクラスAを抽象汎用クラスB<T>から継承し、インターフェイスIAを実装しています。 Tを除くすべてが同じ名前空間に定義され、すべてが同じアセンブリ内にあります。

Bメソッド(BMethod)を有し、IAAに実装されている方法(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。何も助けてくれないようです。

誰が何が起こっているのかも知れないのですか、それともどうしてこのようなことが起こるのかを確認することができます。

答えて

0

[OK]をので、私は他の誰がこの頭痛を持っているが、問題はIA方法についてAでの実装がそれらを使用するスタブのためvirtualする必要がないということだったようにそれはそうここケースでこれを掲示しています。最初に私が見たのはvirtualでした。メタデータと実際のビルドの間には遅れがあったので、実際にはビルドプロセスによってピックアップされてもエラーは発生していないのにメタデータにはなかったようですCS0117

関連する問題