Да определенно.
, Если Вы хотите объект управлять, я на самом деле использую функцию как это:
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, где ранее у Вас были строки, замусоренные на всем протяжении Вашего кода события.
Вам нужно реализовать шаблон проектирования Singleton на Python
Я нашел эту реализацию Надеюсь, это поможет
Найдите "одноэлементный шаблон". Похоже, вы имеете дело с Python, поэтому вам, возможно, придется поискать немного сложнее. У меня есть много примеров на C ++.
Я считаю, что проблема с показанным кодом заключается в том, что вы установили self.active = True
. Это создаст атрибут для экземпляра и установит для него значение True
, в то время как я считаю, что вы хотите установить для активного класса значение True
. Таким образом, вместо self.active = True
попробуйте self .__ class __. Active = True
.