私はラッパーとして機能するクラスへのインターフェイスを通過するのStructureMapを使用したいまだツー・開発されるアプリケーションはSystem.IO.Ports.SerialPort
クラスライブラリでDependency InjectionのためにStructureMapを設定する必要はありますか?
を介してデバイスと通信するために使用することアセンブリを作成しますよSerialPortの周りに私が通信しているデバイスを表すクラスのコンストラクタに入れます。
public interface ISerialPort
{
Handshake Handshake { get; set; }
bool IsOpen { get; }
event SerialDataReceivedEventHandler DataReceived;
void Close();
void Open();
string ReadLine();
string ReadExisting();
}
public class MyDevice
{
private readonly ISerialPort _serialPort;
public MyDevice(ISerialPort serialPort)
{
_serialPort = serialPort;
}
}
また、このアプローチを使用してユニットテストを容易にする予定です。
私は、Application_Start
またはMain
のいずれかの方法を持つweb/desktopアプリケーションを使用していましたが、これをStructureMapを設定するエントリポイントとして使用できました。しかし、これは単一のエントリポイントのないスタンドアロンのアセンブリなので、同じことをすることはできません。
このように、アセンブリで使用するためにStructureMapを構成する最も良い方法は何ですか?
提案どおりに保管してください。この時点でDIコンテナを使用する必要はありません。コンテナは、ライブラリではなく*アプリケーション*によって使用されます。 http://stackoverflow.com/questions/2045904/dependency-inject-di-friendly-library/2047657#2047657 –