2009-05-25 5 views
3

私たちは、たとえばネットワークまたはCOMポートを介したデータ転送を扱うクラス によって実装されるインターフェイスを持っています。MEFを使用した部品固有の設定

は、今のところそれをIDataTransporter呼ぼうと、私たちは2つの実装があります:

ComPortDataTransporterとTcpDataTransporterを。

明らかに、これらの2つは非常に異なる構成を必要とします。

最初にbuadrate、開始/停止ビットなどの設定があります。 秒はipアドレスやポートなどの設定があります。

これに対処するベストプラクティスはありますか? 最後に、ユーザーが「部品」をロードして、 を一度構成できるようにします。

Thnx。

答えて

4

おそらく、あなたのトランスポーター部分とともに何らかの設定部分をエクスポートすることができます。

のは、ホストアプリケーションは、インターフェイスを定義しましょう:あなたの「設定後、...

public interface IDataTransporter 
{ 
    IDataTransporterSettings Settings { get; } 
} 

public interface IDataTransporterSettings 
{ 
    // any common settings are defined here 
} 

...とあらゆるIDataTrasporterは、その型のパブリックプロパティを持っていることを前提としていそれぞれの設定に一致する多数の公開プロパティを持つクラスになる可能性があります。

public class TcpDataTransporterSettings : IDataTransporterSettings 
{ 
    public string Address { get; set; } 
    public int Port { get; set; } 
} 

あなたのTcpDataTransporterクラスは、そのアドレス/ポート/何かを決めるために常にSettingsプロパティから読み込みます。

これで、インポートされた各トランスポータパーツの設定を確認したり、パブリックな設定可能なプロパティ(文字列の場合はTextBox、intの場合はNumericUpDownなど)ごとに適切なコントロールを表示するために、

私は、属性を使用して人間が判読できる説明を各プロパティに追加することができるので、UIの各コントロールのラベルを定義することができます。

私はこれを完全には考えていませんでしたが、どこにでも実装しているわけではありませんが、インポートされた各部品に柔軟な設定を提供できる方法のようです。

+0

いいアイデアのように聞こえますが、答えとしてマークすることはまだありませんが、そうかもしれません。私が今持っているのは、Dictionary <文字列、オブジェクト>で、IDataTransporterインターフェイスの一部です。私はこの解決策も検討します。 アセンブリが独自の.xml構成ファイルを持つことができるのだろうか。 – TimothyP

関連する問題