我有一个界面:
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或约定.
原文地址:https://www.jb51.cc/csharp/93248.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。