1

私は次のクラスを持っています:

public abstract class Query<TResult>
{
    protected abstract TResult Result();

    public TResult Execute()
    {
        return Result();
    }

    public ISession Session { get; set; }
}

プロパティインジェクションを使用してセッションにデータを入力したかったのです。つまり、Queryから継承するものはすべて、Sessionを使用してクエリを実行できるということです。

とにかく..それは常にnullです:(

私は次の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>());
                 });
    }
}

誰かが私が間違っていることを提案できますか?

ありがとう

デイブ

4

1 に答える 1

1

オブジェクトのプロパティを初期化するには、IContainer.BuildUp()メソッドを呼び出す必要があります。

例:

public void PerformQuery<TResult>()
{
    var query = ObjectFactory.GetInstance<Query<TResult>>();
    ObjectFactory.BuildUp(query);
    return query.Execute();
}
于 2012-03-06T18:23:05.220 に答える