我的应用程序支持插件。有一个项目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
。
答案 0 :(得分:1)
尝试反转依赖关系。在PluginUtils项目中创建一个MyClass可以实现的接口(例如IMyClass)
public class MyClass : IMyClass
然后修改您的从属接口以使用该接口而不是外部项目的具体类。
public interface IPluginSave
{
[Description("Save data")]
string SaveData(List<IMyClass> data, string resultsPath);
}