- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个问题,即 MS Fakes 没有向 fakes 程序集添加几个委托(delegate)属性,即使它们显示在元数据中。
我有课A
继承自抽象泛型类B<T>
并实现一个接口(interface)IA
.除了 T
之外的所有内容在同一个命名空间中定义,并且都在同一个程序集中。B
有一个方法( BMethod
)和 IA
定义在 IAMethod
中实现的方法 ( A
) .
在我的测试项目中,我为包含这些类/接口(interface)的那个添加了一个假程序集。我已经指定 fakes 程序集应该只为类 A
添加一个 stub 。如StubA
,默认情况下还会 stub 接口(interface) IA
如StubIA
.
创建 StubA
的实例时我可以将函数定义分配给从类 B
创建的所有委托(delegate),但我无法引用 A
中定义的函数的委托(delegate)属性名称并根据 IA
的契约(Contract)要求. (例如,我可以引用和分配 StubA.BMethodArgType
,但不能 StubA.IAMethodArgType
)
当我导航到 StubA
的定义时在 VS2015 中,我可以看到 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;
...
}
...
IAMethodArgType
的成员为
StubA
定义,但我确实看到了
IAMethodArgType
的成员定义于
StubIA
, stub 接口(interface)。另外,如果我添加
Interfaces="false"
Add
的属性ProjectName.fakes 中的标签 ProjectName.Fakes.xml 文件将不再包含
IAMethodArgType
的成员.
IAMethod
实现
virtual
.似乎没有任何帮助。
最佳答案
好的,所以我在此处发布此内容以防其他人对此感到头疼,但似乎问题在于 A
中的实现对于IA
方法确实需要 virtual
stub 使用它们。我最初制作它们时看到的 virtual
元数据和实际构建之间存在滞后,因此看起来好像它们仍然不在元数据中,即使它们实际上已被构建过程拾取并且不再产生错误 CS0117
关于c# - MS 假货错误 CS0117 : Stub[ClassName] does not contain a definition for [delegate property name] even though metadata says it's there,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44979489/
我是一名优秀的程序员,十分优秀!