Удостоверьтесь, что только один экземпляр класса выполняется

Да определенно.

, Если Вы хотите объект управлять, я на самом деле использую функцию как это:

public static T CreateWrapper<T>(Exception innerException, params object[] parameterValues) where T : Exception, new()
{
    if (parameterValues == null)
    {
        parameterValues = new object[0];
    }

    Exception exception   = null;
    StringBuilder builder = new StringBuilder();
    MethodBase method     = new StackFrame(2).GetMethod();
    ParameterInfo[] parameters = method.GetParameters();
    builder.AppendFormat(CultureInfo.InvariantCulture, ExceptionFormat, new object[] { method.DeclaringType.Name, method.Name });
    if ((parameters.Length > 0) || (parameterValues.Length > 0))
    {
        builder.Append(GetParameterList(parameters, parameterValues));
    }

    exception = (Exception)Activator.CreateInstance(typeof(T), new object[] { builder.ToString(), innerException });
    return (T)exception;
}

Эта строка:

MethodBase method     = new StackFrame(2).GetMethod();

Идет по стековому фрейму для нахождения вызывающего метода тогда, мы используем отражение для получения значений информации о параметре, переданных ему для универсальной функции сообщения об ошибке. Для получения существующего метода просто используют текущий стековый фрейм (1) вместо этого.

, Поскольку другие сказали для имени существующих методов, которое можно также использовать:

MethodBase.GetCurrentMethod()

я предпочитаю обходить стек, потому что, если взгляд внутренне, что метод это просто создает StackCrawlMark так или иначе. Обращение к Стеку непосредственно кажется более четким мне

Сообщение 4.5, можно теперь использовать [CallerMemberNameAttribute] в качестве части параметров метода для получения строки имени метода - это может помочь в некоторых сценариях (но действительно в говорят пример выше)

public void Foo ([CallerMemberName] string methodName = null)

, Это, казалось, было главным образом решением для поддержки INotifyPropertyChanged, где ранее у Вас были строки, замусоренные на всем протяжении Вашего кода события.

5
задан Jed Smith 15 October 2009 в 23:46
поделиться

4 ответа

7
ответ дан 18 December 2019 в 13:16
поделиться

Вам нужно реализовать шаблон проектирования Singleton на Python

Я нашел эту реализацию Надеюсь, это поможет

2
ответ дан 18 December 2019 в 13:16
поделиться

Найдите "одноэлементный шаблон". Похоже, вы имеете дело с Python, поэтому вам, возможно, придется поискать немного сложнее. У меня есть много примеров на C ++.

2
ответ дан 18 December 2019 в 13:16
поделиться

Я считаю, что проблема с показанным кодом заключается в том, что вы установили self.active = True . Это создаст атрибут для экземпляра и установит для него значение True , в то время как я считаю, что вы хотите установить для активного класса значение True . Таким образом, вместо self.active = True попробуйте self .__ class __. Active = True .

1
ответ дан 18 December 2019 в 13:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: