Meine Anwendung unterstützt Plug-Ins. Es gibt ein Projekt, PluginUtils
, das Schnittstellen und Code enthält. Dieses Projekt ist in der Anwendung und jedem Plugin enthalten.Wohin mit Schnittstellendateien für Plug-Ins?
Das Problem ist, dass eine Schnittstelle ein benutzerdefiniertes Projekt erwähnt, aber PluginUtils
bewirkt, dass das benutzerdefinierte Projekt in allen Plug-in-Typen erforderlich ist.
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);
}
}
Wie kann ich Plug-in zu verhindern, die IPluginSend
aus, die den Namespace verweisen implementieren, die MyClass
enthält?
bearbeiten
Antwort Aarons war der Schlüssel. Ich musste einige Abhängigkeiten ändern: PluginUtils
enthält nicht mehr einen Verweis auf den Namespace MyClass
, aber MyClass
verweist jetzt PluginUtils
.
Sie können nicht - "MyClass" ist Teil des Vertrags. Warum erwähnt das Interface es, wenn es von den Implern nicht gebraucht wird? –