我正在尝试创建一个具有特定要求的模块(将在一个简单的 ASP 站点中引用,使用 Autofac Web 表单集成)。它应该返回使用一组特定规则创建的字符串。这些规则由策略定义,每个“参与者”都不同。“Actor”将在运行时根据来自请求的值进行选择。为了让事情变得更难,一些“演员”可以根据请求的国家/地区等不同的具体实施策略。
我已经使用抽象和具体工厂解决了这个问题(第一个了解使用哪个“演员”具体工厂,第二个确定我是否需要特定或通用演员的策略)。问题是,在采用了强模块化设计后,我需要使用反射来获得对特定参与者策略类的间接引用(否则我应该引用包含所有特定策略实现的所有 dll)。
我很想避免这种方法,主要是因为我想使用一种独特的方式来动态加载所需的组件。
我已经查看了一些 Autofac 的可能性,据我所知,我可以注册同一接口的不同实现并使用此处解释的密钥解决它们(https://code.google.com/p/autofac /wiki/TypedNamedAndKeyedServices)。问题是我不知道如何在我的抽象和具体工厂中解决它们(我没有提到那里的解析器......我认为我应该避免它)。
所以我的问题是:
1)我如何在那种情况下使用 Autofac?什么是最佳实践(我肯定错过了一些巨大的东西)
2) 我必须重新考虑这个模块的所有设计吗?我的意思是,我还需要使用抽象工厂和具体工厂吗?
3)谁能指出一些可能与我的问题有关的示例或教程?
非常感谢您的帮助,对于这个冗长且不太清楚的问题,我们深表歉意。