我正試圖找到初始化設備驅動程序(由生產人員維護)的最佳方式。配置通常包含串行端口和其他信息,如果設備驅動程序的底層硬件發生變化,生產人員可能需要更改這些信息。使用依賴注入容器初始化可配置對象
例如
using System.IO.Ports;
public class Scanner : IDriver
{
public SerialPort SerialPort { get; private set; }
public String Id { get; private set; }
public String DisplayName { get; private set; }
public Scanner(SerialPort serialPort, String id, String displayName)
{
SerialPort = serialPort;
Id = id;
DisplayName = displayName;
}
}
public class TestMethod
{
public Scanner MainScanner { get; private set; }
public Scanner SecondaryScanner { get; private set; }
public TestMethod (Scanner main, Scanner secondary)
{
MainScanner = main;
SecondaryScanner = secondary;
}
}
如何在運行時使用DI容器並仍然可以更改配置?我希望避免使用DI容器附帶的XML配置,因爲我期望生產人員經常修改這些(配置)文件。一個單獨的配置文件將是首選。
一種可能實現XML配置
<DeviceDrivers>
<Driver name="main" id="IX234" displayName="main scanner">
<SerialPort name="serialPort" portName="COM8" baudRate="11560" parity="None" dataBits="8" stopBits="None">
</Driver>
<Driver name="secondary" id="IX2E3" displayName="secondary scanner">
<SerialPort name="serialPort" portName="COM9" baudRate="11560" parity="None" dataBits="8" stopBits="None">
</Driver>
</DeviceDrivers>
SerialPort
本身需要從配置文件intialised。
感謝
PS:我正在考慮Ninject,但不知道如果我能順利完成這件事。
不是真的,配置文件可由生產人員編輯。我不想讓他們暴露於統一語法,而只是簡單的可配置項目。我還發現[Unity配置架構](http://msdn.microsoft.com/en-au/library/ff660914(v = pandp.20).aspx#config_registerelement)更有用。 – resp78