我的一个朋友(工作)问我一个问题。
- 从类中删除
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;
}
}
}
他在说,“有办法做到这一点。”但我找不到它,我不相信真的有。你有什么意见?
更新/回答: 我在 Daniel Hilgarth 的帮助下解决了这个问题……在这里;
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);