我有以下课程:
public abstract class Query<TResult>
{
protected abstract TResult Result();
public TResult Execute()
{
return Result();
}
public ISession Session { get; set; }
}
我想使用属性注入来填充Session。这意味着继承自Query的任何东西都可以使用Session进行查询。
无论如何..它总是空的:(
我有以下StructureMap注册码:
public class MyStructureMapRegistry : Registry
{
public MiStructureMapRegistry()
{
Scan(scanner =>
{
scanner.TheCallingAssembly();
scanner.WithDefaultConventions();
For<ISession>().HttpContextScoped().Use(x => x.GetInstance<ISessionFactory>().OpenSession());
FillAllPropertiesOfType<ISession>().Use(x => x.GetInstance<ISession>());
});
}
}
有人能说出我做错了吗?
由于
戴夫
答案 0 :(得分:1)
您需要调用IContainer.BuildUp()方法来初始化对象的属性。
示例:
public void PerformQuery<TResult>()
{
var query = ObjectFactory.GetInstance<Query<TResult>>();
ObjectFactory.BuildUp(query);
return query.Execute();
}