c# – 温莎城堡解析和仿制品

c# – 温莎城堡解析和仿制品,第1张

概述我有以下内容: public interface ISubject { ... }public class Subject<T> : ISubject { ... }public class MyCode<T> { ... pulic void MyMethod() { var item = container.Resolve<ISubject>() 我有以下内容:
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<&gt ;.

container.Register(Component.For(typeof(ISubject<>))                            .ImplementedBy(typeof(Subject<>)));

那你就能做到

var fooSubject = container.Resolve<ISubject<Foo>>();

你没有提供任何上下文,所以我可能没有答案,但有一件事是肯定的 – 你有一个设计问题.

总结

以上是内存溢出为你收集整理的c# – 温莎城堡解析仿制品全部内容,希望文章能够帮你解决c# – 温莎城堡解析和仿制品所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1251540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存