在哪里放置插件的接口文件?

时间:2016-11-24 17:16:15

标签: c# .net

我的应用程序支持插件。有一个项目PluginUtils,包含接口和代码。该项目包含在应用程序和每个插件中。

问题是一个界面提到了一个自定义项目,但PluginUtils导致所有插件类型都需要自定义项目。

namespace PluginUtils
{
    public interface IPluginSend
    {
        [Description("Send an email")]
        void SendEmail(string subject, string body, List<string> attachments, List<string> toAddresses);
    }

    public interface IPluginSave
    {
        [Description("Save data")]
        string SaveData(List<MyClass> data, string resultsPath);
    }
}

如何防止实现IPluginSend的插件必须引用包含MyClass的命名空间?

修改

Aarón的回答很关键。我不得不更改一些依赖项:PluginUtils不再包含对MyClass命名空间的引用,但MyClass现在引用PluginUtils

1 个答案:

答案 0 :(得分:1)

尝试反转依赖关系。在PluginUtils项目中创建一个MyClass可以实现的接口(例如IMyClass)

public class MyClass : IMyClass

然后修改您的从属接口以使用该接口而不是外部项目的具体类。

public interface IPluginSave
{
    [Description("Save data")]
    string SaveData(List<IMyClass> data, string resultsPath);
}