我目前正在設計新的消息翻譯系統,並且有關DI和Unity的以下問題。具有泛型的統一配置
我有以下接口:
public interface ITranslate<TInput, TOutput>
{
TOutput TranslateMessage(TInput message);
}
隨着具體實施如下(其中InternalMessage是我公司開發的定製類)
public class TestTranslate : ITranslate<byte[], InternalMessage>
{
InternalMessage Translate(byte[] message)
{
// Do the translation here and return the result....
}
}
不過,我想使用統一注入翻譯實例通過構造函數加入到我的Translator服務中。用於服務中的方法。
public class TranslatorService
{
private readonly ITranslator translator;
public TranslatorService(ITranslate translator)
{
this.translator = translator;
}
public byte[] DoTranslate(string message)
{
return translator.TranslateMessage(message);
}
}
不過我有2個問題:
1)是否有可能有ITranslate在構造不specifiying譯者將處理(我試圖保持服務 和翻譯的類型儘可能通用,所以如果需要其他翻譯,我只需要換出Translator界面的具體實現)。 2)如果這是可能的,我會怎麼做,然後我會在我的統一配置中做些什麼來做到這一點。注意:我使用的XML配置(不是我的選擇),以 配置我dependenciues等
在此先感謝
斯圖爾特
您的「要在服務中的方法中使用」。顯示非通用接口的用法,這在接下來的任何地方都沒有提到......可能你只是錯過了一些聲明...... – 2014-10-08 01:03:48
所以一方面,你想定義一個通用接口,但在另一方面你不需要希望它在使用/注入到TranslatorService中時是通用的? – 2014-10-08 07:35:50
我有上述構造函數的原因是我不確定這是否可以完成,服務代碼僅作爲示例。 我試圖寫一個通用的翻譯類,可以實現爲調用者認爲合適,但主要的東西 我試圖避免如果可能的是讓翻譯的調用者必須指定類型,理想情況下這將是 受控由統一容器(再次,如果這是可能的話)。 – 2014-10-08 07:55:35