私のアプリケーションはプラグインをサポートしています。インターフェイスとコードを含むプロジェクトPluginUtils
があります。このプロジェクトは、アプリケーションと各プラグインに含まれています。プラグインのインターフェイスファイルはどこに置くのですか?
問題は、1つのインターフェイスでカスタムプロジェクトが記述されていますが、PluginUtils
はすべてのプラグインタイプでカスタムプロジェクトを必要とすることです。私はMyClass
が含まれている名前空間を参照することからIPluginSend
を実装するプラグインを防ぐことができますどのように
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);
}
}
?
編集
アーロンの答えが鍵となりました。いくつかの依存関係を変更する必要がありました。PluginUtils
には、MyClass
の名前空間への参照は含まれていませんが、MyClass
は現在PluginUtils
を参照しています。
「MyClass」は契約の一部ではありません。実装者がそれを必要としない場合、インタフェースはなぜそれを言いますか? –