ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – 使用IoC动态选择接口实现

2019-05-28 02:53:57  阅读:259  来源: 互联网

标签:c dependency-injection inversion-of-control ioc-container castle-windsor


我有一种情况,在运行时确定接口的实现.例如,我检查一个字符串,然后确定要使用哪个子类,没有IoC,它看起来如下所示:

if (fruitStr == "Apple")
{
    new AppleImpl().SomeMethod();
}
else
{
    new BananaImpl().SomeMethod();
}

据IFruit称,AppleImpl和BananaImpl这两个类都是同一个界面的实现.

如何使用IoC / Dependency Injection来完成,特别是在Castle Windsor?

解决方法:

这是关于依赖注入的最常见问题,并在StackOverflow上反复询问.

简而言之,最好使用模式来解决运行时创建,而不是尝试使用容器超过composing object graphs, which is all it is designed for.

有几种模式可以用于此,但最好的选择是使用Abstract Factory,Strategycombination of the two.确切的解决方案取决于实例的使用方式 – 如果您需要几个短的话,请使用工厂生存实例并希望在使用后丢弃它们,或者如果需要在循环中反复使用实例而不必每次都重新创建它们,请使用策略.这种组合是高性能和低内存消耗之间的权衡.

标签:c,dependency-injection,inversion-of-control,ioc-container,castle-windsor
来源: https://codeday.me/bug/20190528/1168069.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有