0
編輯:清除了一些名稱並使示例更易於閱讀。使用泛型的屬性的StructureMap設置器注入
這個類:
public class EntranceService : IEntranceService
{
public IMyNotifier<Entrance> Notifier { get; set; }
public EntranceService(IRepositoryConfigDb<Entrance> repo )
{
this.repo = repo;
}
}
我想使用的通告程序屬性通過setter注入注入。正如你所看到的通知使用的界面與開放式泛型類型,因此我不能做到以下幾點:
x.SetAllProperties(p => p.OfType<IMyNotifier<IEntity>>());
StructureMap不喜歡它。 這是IMyNotifier的樣子:
public interface IMyNotifier<T> where T : class, IEntity, new()
編輯:這使我不得不爲每個規則和IEntity每一個具體的FPGA實現,像這樣:
x.SetAllProperties(setter => setter.OfType<IMyNotifier<Entrance>>());
x.SetAllProperties(setter => setter.OfType<IMyNotifier<Something>>());
x.SetAllProperties(setter => setter.OfType<IMyNotifier<Endpoint>>());
x.SetAllProperties(setter => setter.OfType<IMyNotifier<Interaction>>());
x.SetAllProperties(setter => setter.OfType<IMyNotifier<Queue>>());
x.SetAllProperties(setter => setter.OfType<IMyNotifier<Group>>());
任何幫助表示讚賞!
在大多數情況下,您應該傾向於構造函數注入而不是屬性注入。在這種情況下,爲什麼你需要使用屬性注入是否有特定的原因? – Steven
Hello Steven,我同意,但這是一個單獨的事情。這個問題是特定於定義Setter注入。 – imbageek