c# – 温莎城堡解析和仿制品
发布时间:2020-12-15 08:42:04 所属栏目:百科 来源:网络整理
导读:我有以下内容: public interface ISubject { ... }public class SubjectT : ISubject { ... }public class MyCodeT { ... pulic void MyMethod() { var item = container.ResolveISubject(); //????? how do I pass in T } ... } 在这种情况下,我该如何解决
我有以下内容:
public interface ISubject { ... } public class Subject<T> : ISubject { ... } public class MyCode<T> { ... pulic void MyMethod() { var item = container.Resolve<ISubject>(); //????? how do I pass in T } ... } 在这种情况下,我该如何解决. 干杯 解决方法
vdhant – 这不是容器的使用方式.
你想使用ISubject,对吗?然后,如果你通过了T,你就会破坏你的抽象,因为你的调用者必须知道ISubject,实际上是一个主题,而且不止于此,它的主题< T>并且它需要一个具体的T. 没有容器可以允许,但这是一个设计问题,而不是工具问题. 修复设计的一件事是将其设为显式 – 将ISubject更改为ISubject< T> 然后你可以注册开放的通用类型ISubject<>并将其绑定到打开泛型类型Subject<> ;. container.Register(Component.For(typeof(ISubject<>)) .ImplementedBy(typeof(Subject<>))); 那你就能做到 var fooSubject = container.Resolve<ISubject<Foo>>(); 你没有提供任何上下文,所以我可能没有答案,但有一件事是肯定的 – 你有一个设计问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |