- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在为我的应用程序创建一个插件系统,我希望插件公开一个人类可读的名称。该应用程序将显示可用插件列表,在此列表中,名称需要可用。
我想让插件的开发人员非常清楚他们需要做什么才能使他们的插件正常工作。
目前我正在让插件类实现一个接口(interface),该接口(interface)需要实现一个属性“ConsumerName”。但是,这需要主应用程序创建每个插件的实例,以便使用 CunsumerName 属性,只是为了显示列表。
public interface IDataConsumer : IDisposable
{
string ConsumerName { get; }
void Consume(DataRowSet rows);
...
}
有没有办法强制插件类提供元数据而不创建每种类型的实例?
我的后备计划是在每个类上使用反射和一些属性,但我不认为可以使用接口(interface)强制使用属性。
最佳答案
不,属性不能成为接口(interface)契约的一部分。但强烈推荐它们。
我过去所做的就是制作一个属性,例如:
[AttributeUsage(AttributeTargets.Class)]
public class PluginNameAttribute : Attribute {
public string ConsumerName { get; set; }
}
如果程序员选择用该属性装饰他的类,那就太好了。如果没有,您可以求助于类名本身:
var consumerName = type.Name;
var nameAttribute = type.GetCustomAttributes(typeof(PluginNameAttribute), true)
.FirstOrDefault() as PluginNameAttribute;
if (nameAttribute != null) {
var attributeName = nameAttribute.ConsumerName;
if (!string.IsNullOrEmpty(attributeName)) {
consumerName = attributeName;
}
}
如果有文档证明他们应该这样做,那么要求插件开发人员使用该属性应该不算过分。
关于c# - 给插件类一个人类可读的名字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15338652/
有没有一种方法(程序、库)可以大致了解文档是用哪种语言编写的? 我有一堆混合语言的文本文档(~500K),需要导入支持 i18n 的 CMS (Drupal).. 我不需要完美的匹配,只需要一些猜测。
Closed. This question needs details or clarity。它当前不接受答案。
使用 UTF-8 编码。 (Multiple languages in one HTML page)。 跨不同浏览器(包括 iPad 上的 Safari)在单个网页上正确显示多种人类语言的最佳做法是什
我有一个完全可用的代码,它是为 Windows 编写的,是用 Visual Studio 构建的。 我想做的是为该软件添加另一种语言。我的想法是在窗口角落放置两个标志(一个英语和一个德语),并在用户点
我刚刚得到一个脚本,我想对其进行一些更改,我正在寻找某人为我开发一份自由职业,以使我将提供的加载字符串可读以进行编辑。 Lua代码是这样的: ------------------------- ENG
有没有不是简单逐字翻译的语言翻译项目?一个具有先进算法/设计的? 目前主流和流行的翻译软件,例如谷歌翻译,似乎是查找一个词或一组连续的词,然后将其直接翻译成不知何故确定为最佳匹配的内容。但是因为它不是
基于 Twilio 的人类/非人类检测 - 我正在尝试通过如下所示的代码来检测调用是否被人类或机器人接听 HashMap params = new HashMap(); params.put("Fro
这是目前(不确定)我能想到的处理多语言网站的最佳方式,它不涉及 gettext、zend_translate 或任何 php 插件或框架。 我认为它非常简单:我有 3 种语言,我将它们的“内容”写在不
我是一名优秀的程序员,十分优秀!