繁体   English   中英

AutoFixture:如何从System.Type创建CreateAnonymous

[英]AutoFixture: how to CreateAnonymous from a System.Type

我只需要使用System.Type从AutoFixture创建一个对象。 但是,似乎没有CreateAnonymous()的重载只是一个类型。 他们都期望编译时通用T.有没有办法将System.Type转换为T?

编辑使用细节:

我正在使用AutoMapper,它有一个用于注入组件的钩子,以支持复杂的映射场景:

void ConstructServicesUsing(System.Func<Type,object> constructor)

从签名中可以看出,客户端可以注册一个Func ,AutoMapper会在需要注入服务时调用它(主要是ValueResolver实现)。

在生成版本中,此方法调用我的StructureMap容器​​来检索组件。 但是,在单元测试我的映射代码时,我必须提供存根实现,否则AutoMapper会抛出异常。 由于我使用AutoFixture + Moq作为我的自动锁定容器,因此让AF新建一个完全水合的存根似乎很自然,所以我可以集中精力编写单元测试代码。

这是可能的 ,但故意隐藏,因为你应该很少需要这样做:

var specimen = new SpecimenContext(fixture).Resolve(type);

AutoFixture中有大量的可扩展点,通常比弱类型的Create方法提供更好的替代方案。 你想达到什么目的?

您必须使用反射来创建正确的MethodInfo并调用它。 请参阅以下答案: 如何使用给定的Type对象调用泛型方法?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM