我使用StructureMap创建ModuleData的实例
我有很多继承自ModuleData的类(A,B,C ......类),每个类都在coustructor中得到Config1或Config2 在注册表(位于file1.cs)中,我扫描所有类型的ModuleData。
在获取(在file2.cs中提到)我得到了实例。
我希望当ObjectFactory在创建ModuleData实例时创建Config1 / Config2时,它会将“param”传递给Config1 / Config2构造函数。 我如何配置structuremap来做到这一点?
P.S。 注册表& 获取方法位于不同的文件中! 谢谢
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;
}
答案 0 :(得分:0)
我想不出一个好的方法来做你想做的事情,我觉得它有点像设计问题......我想你需要解释一下为什么你需要为我做这个帮你。
什么是页面模块?为什么您的配置对象依赖于它?
根据您的评论,我认为您需要的是一个为您创建ModuleData对象的工厂对象。由于它们是对象,因此从容器中获取它们没有多大意义。考虑使用像Entity Framework这样的数据访问技术,从容器中获取这些对象是没有意义的。据我所知,这是一个类似的案例。