Изменить: nameof
прибыл в c # 6. Yay!
Нет nameof
/ infoof
и т. д .; это много обсуждается, но это то, что оно есть.
Существует способ сделать это с использованием лямбда-выражений в .NET 3.5 (и разбора дерева выражений), но на самом деле это не стоит накладные расходы. На данный момент я просто придерживаюсь строк (и модульных тестов, если вы решили не разорвать его).
using System;
using System.ComponentModel;
using System.Linq.Expressions;
using System.Reflection;
class Program : INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
static void Main() {
var p = new Program();
p.PropertyChanged += (s, a) => Console.WriteLine(a.PropertyName);
p.Name = "abc";
}
protected void OnPropertyChanged<T>(Expression<Func<Program, T>> property) {
MemberExpression me = property.Body as MemberExpression;
if (me == null || me.Expression != property.Parameters[0]
|| me.Member.MemberType != MemberTypes.Property) {
throw new InvalidOperationException(
"Now tell me about the property");
}
var handler = PropertyChanged;
if (handler != null) handler(this,
new PropertyChangedEventArgs(me.Member.Name));
}
string name;
public string Name {
get{return name;}
set {
name = value;
OnPropertyChanged(p=>p.Name);
}
}
}
Нет, текущий код Grafana и текущий API CloudWatch не поддерживают его. Конечно, вы можете написать его самостоятельно.