我制作了一个支持插件的应用程序。目前,插件的基类实现了一个抽象类,并为其提供了插件的名称(省略了东西):
public class AppExecutePlugin : APlugin
{
public AppExecutePlugin() : base("Application Execute")
{
}
... (other stuff here)
}
现在,我正在考虑使用自定义属性命名插件(不关心语法错误):
[PluginName("Application Execute")]
public class AppExecutePlugin : APlugin
{
public AppExecutePlugin()
{
}
}
由于我很少使用自己的应用程序属性,我想知道第二种方法是否会导致更抽象的实现,或者一般情况下,如果它与我的第一种方法相比具有优势。
答案 0 :(得分:1)
它不会导致更抽象的实现(因为很难评估它如何影响'抽象'),但它有一些好处:
E.g。我的插件看起来像这样:
[Plugin("FriendlyName", Description = "..", Version = "1.0")]
[RequiresLicense("LicKey.XYZ")]
class MyPlugin : PluginBase {...}
没有属性,我需要将所有这些信息添加到基类构造函数中。当然,您可以通过插件界面中的方法来避免它,如下所示:
public static PluginInfo GetPluginInfo()
{
return new PluginInfo() { Name = "FriendlyName",
Description = "..",
Version = "1.0",
License = "lickey.XYZ" };
}
您可以使用反射执行它而无需实例化插件,从而实现与属性相同的操作。我喜欢这种方法的属性,因为它感觉更具说服力,但这可能很容易就是个人品味。