0

PostSharp を利用したシングルトン パターンがあればいいのにと思います。

PostSharp は可能ですか?

既存の例またはプロジェクトはありますか?

次のようにしたい:

interface ISingleton
{
    void Refresh();
    object Instance{get;set;}
}

[Singleton(AutoRefresh=true, AutoRefreshInterval=20)]
public class Repository
{
    private Repository()
    {
        //Code to load data...
    }
    public DoSomething()
    {
        //Do something at instance level;
    }
    public void Refresh()
    {
        //Refresh data
    }
}

SingletonAttribute クラスで ISingleton を実装し、インスタンス プロパティと Refresh() メソッド本体のコードを挿入する必要があります。

クラスを使用する場合:

((Repository as ISingleton).Instance as Repository).DoSomething();
4

1 に答える 1

4

私が理解できる限り、あなたはオブジェクトの寿命を制御したいと考えています。これは、AOP だけでできることではありません。そのようなものは通常、IoC コンテナー( UnityWindsorNinject ) を使用して管理され、オブジェクトの有効期間 (シングルトーン、スレッドごとに 1 つのインスタンス、要求ごとに 1 つのインスタンスなどのオプションが利用可能) を設定します。IoC コンテナーを使用する場合は、独自の属性を記述できるため、たとえば [Singletone] 属性を持つすべてのクラスを取得し、それらをコンテナー内のシングルトーン ライフタイムに登録できます。次に、クラスのコンシューマがコンテナからインスタンスを解決すると、常に同じインスタンスが取得されます。

于 2013-04-23T08:01:51.497 に答える