c# – StructureMap使用扫描自动注册通用类型
发布时间:2020-12-15 03:57:09 所属栏目:百科 来源:网络整理
导读:我有一个界面: IRepositoryT where T : IEntity 而在敲击我的UI im使用一些假的存储库实现,只是返回任何旧的数据. 他们看起来像这样: public class FakeClientRepository : IRepositoryClient 现在这样做: ForRequestedTypeIRepositoryClient() .TheDefau
我有一个界面:
IRepository<T> where T : IEntity 而在敲击我的UI im使用一些假的存储库实现,只是返回任何旧的数据. 他们看起来像这样: public class FakeClientRepository : IRepository<Client> 现在这样做: ForRequestedType<IRepository<Client>>() .TheDefaultIsConcreteType<FakeRepositories.FakeClientRepository>(); 但是对于我所有的IEntities来说,这个时间是多少.是否可以使用Scan来自动注册我所有的虚拟存储库以进行各自的存储库? 编辑:这是我得到的,但我收到错误说请求的类型isnt注册:( Scan(x => { x.TheCallingAssembly(); x.IncludeNamespaceContainingType<FakeRepositories.FakeClientRepository>(); x.AddAllTypesOf(typeof(IRepository<>)); x.WithDefaultConventions(); }); 谢谢 安德鲁 解决方法
有一个更简单的方法来做到这一点.详情请看这篇博文:
Advanced StructureMap: connecting implementations to open generic types
public class HandlerRegistry : Registry { public HandlerRegistry() { Scan(cfg => { cfg.TheCallingAssembly(); cfg.IncludeNamespaceContainingType<FakeRepositories.FakeClientRepository>(); cfg.ConnectImplementationsToTypesClosing(typeof(IRepository<>)); }); } } 这样做避免了创建自己的ITypeScanner或约定. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |