Max*_*Max 3 .net reflection design-patterns interface class
我有一个场景,我希望n个类可以查看相同的数据,并决定是否需要完成任何工作.工作由团队完成,多个团队可以同时处理数据.我正在考虑为每个实现CreateWork接口的团队创建一个类.所有CreateWork类都必须有发言权.目前只有少数,但将来会有更多.
我计划的解决方案的Sudo代码
For each CreateWork class in assembly
class.CheckAndCreateWork(dataIn,returnedCollectionOfWorkToBeDone)
Next
Run Code Online (Sandbox Code Playgroud)
是否有一种设计模式可以以优雅的方式实现这一目标?循环遍历程序集中的每个类似乎有点乱.
干杯
您可以执行以下操作:
使用Assembly.GetTypes获取程序集中定义的所有类型.要获取运行代码的程序集的引用,请使用Assembly.GetExecutingAssembly.
对于每种类型,使用Type.IsAssignableFrom检查它是否实现了所需的接口.
对于每个适当的类型,使用Activator.CreateInstance创建实例.
它大致会像这样(未经测试):
foreach(var type in Assembly.GetExecutingAssembly().GetTypes()) {
if(typeof(ITheInterface).IsAssignableFrom(type)) {
var theInstance=(ITheInterface)Activator.CreateInstance(type);
//do something with theInstance
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
526 次 |
| 最近记录: |