Мой друг (с работы) задал мне вопрос.
- Удалите ключевое слово
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;</p>
<p>namespace Webbing.Session
{
public class Members
{
// Guid, userId
public Dictionary Guid, int> Live = new Dictionary Guid,int>();</p>
<pre><code> private static readonly Members __instance = new Members();
public static Members Instance
{
get
{
return __instance;
}
}
}
}
Использование: Members.Instance.Live.TryGetValue (signatureFromRequest, out userId);