相关疑难解决方法(0)

AutoFixture:配置Open Generics Specimen Builder

我有一个使用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)

c# generics autofixture open-generics

7
推荐指数
1
解决办法
1936
查看次数

标签 统计

autofixture ×1

c# ×1

generics ×1

open-generics ×1