我有一个使用Open Generics的对象模型(是的,是的,现在我有两个问题;这就是为什么我在这里:): -
public interface IOGF<T>
{
}
class C
{
}
class D
{
readonly IOGF<C> _ogf;
public D( IOGF<C> ogf )
{
_ogf = ogf;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试让AutoFixture生成D上面的匿名实例.但是,AutoFixture本身没有内置的构建策略IOGF<>,因此我们观察到:
public class OpenGenericsBinderDemo
{
[Fact]
public void X()
{
var fixture = new Fixture();
Assert.Throws<Ploeh.AutoFixture.ObjectCreationException>( () =>
fixture.CreateAnonymous<D>() );
}
Run Code Online (Sandbox Code Playgroud)
基本信息是:
Ploeh.AutoFixture.ObjectCreationException:AutoFixture无法从IOGF`1 [C]创建实例,很可能是因为它没有公共构造函数,是抽象或非公共类型.
我很高兴为它提供一个具体的实现:
public class OGF<T> : IOGF<T>
{
public OGF( IX x )
{
}
}
public interface IX
{
}
public class X …Run Code Online (Sandbox Code Playgroud)