【发布时间】:2012-01-20 15:08:58
【问题描述】:
我的一个朋友(工作)问了我一个问题。
- 从
Dictionary中删除static关键字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);
【问题讨论】:
-
我能想到的只有反射......
标签: oop class c#-4.0 static non-static