【发布时间】:2011-03-16 01:26:12
【问题描述】:
我使用 StructureMap 创建 ModuleData 的实例
我有很多类继承自 ModuleData(class A,B,C...) 并且每个类都在 coustructor 中获得 Config1 或 Config2
在 Registry(位于 file1.cs)中,我扫描所有类型的 ModuleData。
在 Get(包含在 file2.cs)中,我得到了实例。
我希望当 ObjectFactory 在创建 ModuleData 实例时创建 Config1/Config2 时,它将“param”传递给 Config1/Config2 构造函数。 我如何配置结构图来做到这一点?
附: Registry 和 Get 方法位于 不同 文件中!!! 谢谢
public class Config1
{
Config1(string param)
{
}
}
public class Config2
{
Config2(string param)
{
}
}
//.....//
public class A : ModuleData
{
A(Config1 c)
{
}
}
public class B : ModuleData
{
A(Config2 c)
{
}
}
//....//
//located in file1.cs
public Registry()
{
Scan(x =>
{
x.TheCallingAssembly();
x.AddAllTypesOf<ModuleData>();
});
ObjectFactory.Initialize(x =>
{
x.For<Config1>().Use<Config1>();
x.For<Config2>().Use<Config2>();
});
}
//....//
//located in file2.cs
public ModuleData Get(object o)
{
var module = o as PageModule;
var t = Type.GetType(string.Format("{0}.{1},{2}", Settings.Namespace, module.Name, Settings.Assembly));
return ObjectFactory.With("param").EqualTo(module.Parameters).GetInstance(t) as ModuleData;
}
【问题讨论】:
标签: structuremap