6

我可以像这样获取构造函数参数的类型:

Type type = paramInfo.ParameterType;

现在我想从这种类型创建存根对象。有可能吗?我尝试使用自动固定装置:

public TObject Stub<TObject>()
{
   Fixture fixture = new Fixture();   
   return fixture.Create<TObject>();
}

..但它不起作用:

Type type = parameterInfo.ParameterType;   
var obj = Stub<type>();//Compile error! ("cannot resolve symbol type")

你能帮帮我吗?

4

1 回答 1

11

AutoFixture确实有一个非通用 API 来创建对象,尽管有点隐藏(按设计)

var fixture = new Fixture();
var obj = new SpecimenContext(fixture).Resolve(type);

正如@meilke 链接的博客文章所指出的,如果您发现自己经常需要这个,您可以将其封装在扩展方法中:

public object Create(this ISpecimenBuilder builder, Type type)
{
    return new SpecimenContext(builder).Resolve(type);
}

这使您可以简单地执行以下操作:

var obj = fixture.Create(type);
于 2013-09-23T07:41:48.387 回答