var myObject = new { Id = 0, Name = "Test" };
我想獲得密鑰名稱爲可變項目的另一部分爲前:C#獲取對象對的名稱
var keyName = someObject[0]; //someObject is passed myObject;
var value = someObject[1];
//Output keyName = Id; value = 0;
我知道,字典將是一件好事,但我要堅持到myObject的拖延;
var myObject = new { Id = 0, Name = "Test" };
我想獲得密鑰名稱爲可變項目的另一部分爲前:C#獲取對象對的名稱
var keyName = someObject[0]; //someObject is passed myObject;
var value = someObject[1];
//Output keyName = Id; value = 0;
我知道,字典將是一件好事,但我要堅持到myObject的拖延;
您可以訪問對象的屬性是這樣的:
myObject.GetType().GetProperties()
和例如姓名
myObject.GetType().GetProperties()[0].Name //("Id")
哇非常類似於Java語法,謝謝:) – Obik 2014-12-03 13:47:28
這是不可能的反射,因爲一旦編譯爲IL,變量將不會有一個名稱。但是,您可以使用表達式樹,促進變量封閉:
static string GetVariableName<T>(Expression<Func<T>> expr)
{
var body = (MemberExpression)expr.Body;
return body.Member.Name;
}
如下您可以使用此方法:
static void Main()
{
var someVar = 3;
Console.Write(GetVariableName(() => someVar));
}
請注意,這是相當緩慢的,所以不要用它在您的應用程序的性能關鍵路徑中。
有關更完整的示例,請參見here。
爲什麼你需要根據索引訪問它們,你可以訪問它的屬性,比如'myObject.Id','myObject.Name'? – Habib 2014-12-03 13:26:01