アプリケーション用のプラグインシステムを作成していますが、プラグインで人間が読み取れる名前を公開したいと思います。アプリケーションは利用可能なプラグインのリストを表示します。このリストでは、名前が利用可能である必要があります。
プラグインの開発者がプラグインを機能させるために何をする必要があるかを明確にしたいと思います。
現在、プラグインクラスにインターフェイスを実装させており、インターフェイスにはプロパティ「ConsumerName」を実装する必要があります。ただし、これには、リストを表示するためだけにCunsumerNameプロパティを使用するために、メインアプリケーションが各プラグインのインスタンスを作成する必要があります。
public interface IDataConsumer : IDisposable
{
string ConsumerName { get; }
void Consume(DataRowSet rows);
...
}
各タイプのインスタンスを作成せずに、プラグインクラスにメタデータを提供させる方法はありますか?
私のフォールバックプランは、各クラスでリフレクションといくつかの属性を使用することですが、属性をインターフェイスを使用して強制できるとは思いません。