2009-10-30 2 views
0

Это могло бы шов, как странный вопрос, но ....Как получить название объекта?

public string MyProperty 
{ 
    get 
    { 
     return "MyProperty"; 
    } 
} 

Как я могу заменить оператор возврата Ехать возвращает имя свойства без его жёстко?

+0

Это действительно странный вопрос. Каково намеренное использование? –

+0

предположительно для отладки, чтобы он мог распечатать какой метод происходит в событии? –

ответ

9

я бы не рекомендовал делать это в целом, но здесь мы идем:

return MethodBase.GetCurrentMethod().Name.Substring(4); 

Использование обфускатором полностью может ввернуть это вверх, кстати.

+1

Ну, разве это не то, для чего предназначены обфускаторы? :-) – Joey

+0

Johannes: Возможно;) Но вы не хотите, чтобы они превращали ваш код в «IndexOutOfRangeException». –

+0

спасибо :), который отлично работал. Еще одно объяснение того, зачем мне это нужно: мне было предоставлено приложение, которое использует около 50 ключей из файла webconfig. И моя задача - разрешить приложению работать с любым количеством клиентов (необходимо повторить эти 50 ключей для каждого нового клиента). Итак, я переместил ключи в отдельный файл и вам нужно создать класс, который инкапсулирует доступ к данным, чтобы иметь возможность создавать массив клиентов. – Sergio

1

Если вы используете .NET, вы можете также использовать LINQ для идентификации этого:

public static string GetName<T>(Func<T> expr) 
{ 
    var il = expr.Method.GetMethodBody().GetILAsByteArray(); 
    return expr.Target.GetType().Module.ResolveField(BitConverter.ToInt32(il, 2)).Name; 
} 

Я не могу утверждать кредит для этого решения - это произошло из here.

+0

dazzler ;-) +1 очень интересный подход, никогда не слышал об этом –

Смежные вопросы