我想要一個組件在註冊表中創建/註冊後註冊其他組件。比方說,我有以下組成部分:組件如何提供其他組件?
interface IConfiguration
{
string SourceDirectory { get; }
string TargetDirectory { get; }
// other primitive-typed configuration parameters
}
class FileConfiguration : IConfiguration
{
// read parameters from some config file
}
class SourceDirectoryWrapper
{
public byte[] ReadFile(string filename)
{
// read a file from the source directory
}
public string Directory { get; set; }
}
class TargetDirectoryWrapper
{
public byte[] WriteFile(string filename)
{
// write a file into the source directory
}
public string Directory { get; set; }
}
class DirectoryWrapperFactory
{
public DirectoryWrapperFactory(IConfiguration config)
{
var source = new SourceDirectoryWrapper {
Directory = config.SourceDirectory
};
var target = new TargetDirectoryWrapper {
Directory = config.SourceDirectory
};
}
}
組件FileConfiguration
和DirectoryWrapperFactory
可以註冊爲是平常。
但是,我想完成的是以某種方式「取消」在DirectoryWrapperFactory
中創建的source
和target
對象。基本思想是不同的環境可能需要不同的配置提供者。 (即使沒有,我認爲將讀取配置參數放入單獨的組件也是個好主意。)
我還想在IoC容器中管理SourceDirectoryWrapper
和TargetDirectoryWrapper
。在我的情況下,主要是爲了方便 - 我有一個我需要的EventSource
實現,所以我使用屬性autowiring注入它。不在IoC容器中的每個對象都需要明確傳遞,這是我的錯誤。
所以:這可能與AutoFac?如果是這樣,怎麼樣?我對生命週期事件進行了抨擊,但大多數人不允許在構建對象後訪問註冊表。
我用匯編掃描,除了一個EventSourceProxy實現一切..這是完全有可能的,它只是讓我不知道我可以註冊一些事情手動。 – millimoose