我有一個接口「IRunAtStartup」,它在幾個類中實現。該接口有一個方法「Execute」,它需要在應用程序啓動時爲所有類執行。針對Unity容器中相同接口的多個類
在編譯時,我不知道實現接口的類的數量,因此這確實需要以通用的方式編寫。
使用Unity國際奧委會和下面2種方法我都試過2辦法
1)拋出運行時錯誤:
container.RegisterTypes(runAtStartUp, WithMappings.FromAllInterfaces);
2)拋出一個編譯錯誤 - 在「無法解析型」在for循環中註冊命令。我對統一世界比較陌生,並且懷疑我錯過了這裏的一些基本問題。
IEnumerable<Type> runAtStartUp = typeFinder.FindClassesOfType<IRunAtStartup>(true);
foreach (var type in runAtStartUp)
{
container.RegisterType<IRunAtStartup, type>(type.AssemblyQualifiedName);
}
foreach (var task in container.ResolveAll<IRunAtStartup>())
{
task.Execute();
}
您可以發佈堆棧跟蹤嗎?方法2對我來說似乎沒問題,其中一種類型可能會遇到問題。 – cynic
方法2甚至沒有編譯。這裏是同樣的截圖:https://dl.dropboxusercontent.com/u/11374665/approach-2.JPG – Vikram
哦。你使用無效的C#語法,錯過了。改爲使用'container.RegisterType(typeof(IRunAtStartup),type,type.AssemblyQualifiedName)'。 – cynic