1

IOC パターンを使用しようとしていますが、同じものを使用して状態管理を実装する完璧な方法を見つけることができませんでした。誰かが同じことで私を助けることができれば素晴らしいでしょう。ありがとうございました。

4

1 に答える 1

0

私がすることは、最初に、セッションに保存する必要があるすべてのプロパティ (つまり、コンテキスト) を含むインターフェイスを作成することです。

using ProjectName.Core.Domain;

namespace ProjectName.Core.Interfaces
{
    public interface IProjectNameSessionContext
    {
        string StringProperty1 { get; set; }
        bool BoolProperty1 { get; set; }
        ProjectName.Core.Domain.Entity1 DomainEntity1 { get; set; }
    }
}

次に、このインターフェイスを実装するクラスを作成し、シリアル化可能としてマークします。

using ProjectName.Core.Interfaces;

namespace ProjectName.Front.SessionData
{
    [Serializable]
    public class ProjectNameSessionContext : IProjectNameSessionContext
    {
        public string StringProperty1 { get; set; }
        public bool BoolProperty1 { get; set; }
        public ProjectName.Core.Domain.Entity1 DomainEntity1 { get; set; }
    }
}

最後に、実行時にインターフェースをクラスにバインドし、HttpSession コンテキストでオブジェクトをインスタンス化するよう IOC に指示します。

StrucureMap では次のようになります。

For<Core.Interfaces.IProjectNameSessionContext>().LifecycleIs(new HttpSessionLifecycle()).Use<ProjectNameSessionContext>();

それが役立つことを願っています!

于 2013-05-15T16:06:30.170 に答える