将数据传递到插件对象的最佳方法

时间:2018-01-26 15:25:58

标签: c# .net oop design-patterns

我经常遇到这样的问题:我有不同的插件,它们基本上都执行相同的任务,但都以不同的方式。所以每个插件都需要不同类型的参数,但是如何传递它们呢?

IMySpecificTask plugin = PluginResolver.Resolve(typeof(IMySpecificTask));

IMySpecificTask的每个实现都需要我需要访问的域的不同对象。 我当然可以使用服务定位器/单例模式来获取我需要的信息但是不是更清洁的方式吗?

我能想到的另一种方式,但对我来说似乎也很可疑:

if (plugin is INeedsServiceA a)
    a.SetServiceA(myserviceA);
if (plugin is INeedsServiceB b)
    b.SetServiceB(myserviceB);
...

0 个答案:

没有答案