我正在尋找任何能夠識別這是否可能的人,我目前正在編寫一個小型但可擴展的應用程序,該應用程序將具有插件體系結構。將實現的接口指定爲C#中的一個屬性
以確保應用程序是可適用於當前的應用程序,我使用的是自定義屬性附加到組裝
[AttributeUsage(AttributeTargets.Assembly)]
class PluginAttributes: Attribute
{
public PluginAttributes(string name, string description, string version, string author)
{
Name = name;
Description = description;
Version = version;
Author = author;
}
public string Name { get; private set; }
public string Description { get; private set; }
public string Version { get; private set; }
public string Author { get; private set; }
public XXXXXX Implements { get; private set; }
}
我瞄準的是什麼,就是「使」屬性將確定適當的插件的接口類型。我有許多在庫中定義的接口,如ICompress,IEncrypt,ILogging等。
該屬性將用於分類它是哪種類型的插件,而不必爲每個插件創建單獨的屬性。
我知道我可以讓它作爲字符串傳遞並使用反射或使用枚舉,但我希望代碼儘可能低維護,以便可以在不觸及應用程序核心的情況下開發插件。
那麼一個插件不能實現多個接口?我看起來不太靈活。 – xxbbcc
XXXXXX可以是'Type'類型。我分享@xxbbcc的意見,認爲將這個屬性應用於整個Assembly是不太靈活的。爲什麼不創建可應用於類的屬性?然後您可以請求所有實現您屬性的類來獲取程序集中的所有插件。 –
是的,這在設計上非常有用,因爲其意圖是可以將工作流與不同的插件混合匹配,並且每個接口都針對某種類型的插件,因此每個模塊只應該對實現一個流程感興趣 –