私の友人(仕事から)が私に質問をしました。
- クラスから
static
キーワードを削除します。Dictionary
Live
Members
- メソッド
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);