0

私の友人(仕事から)が私に質問をしました。

  1. クラスからstaticキーワードを削除します。Dictionary LiveMembers
  2. メソッドnew Members();でインスタンスを作成するために使用しないでください。Check(...)

したがって、これらのルールを使用して、次Liveのような他のクラスからの呼び出しに対して行う必要があることは次のとおりです。

Members.Live.TryGetValue(signatureFromRequest, out userId);

私はこれを持っています。

using System;
using System.Collections.Generic;
namespace Webbing.Session
{
    public class Members
    {
        // THAT Dictionary Live was a static... public static Dictionary...
        public Dictionary Guid, int> Live = new Dictionary Guid,int>();
    }
}

この:

using System;
using WcfService.Session;

namespace Webbing.BusinessDb
{
    public class Signature
    {
        public static bool Check(Guid signatureFromRequest)
        {
            bool result = false;

            int userId;

            Members checker = new Members(); // <--------- don't use this
            checker.Live.TryGetValue(signatureFromRequest, out userId);

            if (userId != 0)
            {
                result = true;
            }

            return result;
        }
    }
}

彼は「それをする方法がある」と言っていますが、私はそれを見つけることができず、実際にあるとは思いません。あなたの意見は何ですか?

更新/回答: ダニエル・ヒルガースの助けを借りて質問を解決しました...これが;


using System;
using System.Collections.Generic;

namespace Webbing.Session { public class Members { // Guid, userId public Dictionary Guid, int> Live = new Dictionary Guid,int>();

    private static readonly Members __instance = new Members();

    public static Members Instance
    {
        get
        {
            return __instance;
        }
    }
}

}

使用法:Members.Instance.Live.TryGetValue(signatureFromRequest、out userId);

4

1 に答える 1

1

あなたが提供した正確な構文では方法はありません。
1つの可能性はシングルトンですが、次のようになります。

Members.Instance.Live.TryGetValue(signatureFromRequest, out userId);

部分に注意してください.Instance

シングルトンを実装するいくつかの方法については、ここを参照してください。

ご覧のとおり、Liveプロパティは静的ではなくなりましたが、新しいプロパティInstanceは...

同僚に彼が何を意味するのかを尋ねるのが最善だと思います。

于 2012-01-20T15:11:16.377 に答える