2015-02-09 154 views
0

是否可以將匿名類型中的變量的值用作屬性名稱?在匿名類型中使用變量

var foo = "bar"; 
var anon = new {foo = _list}; 
//    ^foo should be "bar" 

我希望這是清楚我所要求的

+0

你是什麼意思的「標識符」? – 2015-02-09 23:57:14

回答

3

不,事實並非如此。你實際上並沒有創建一個動態對象,你正在創建一個匿名類型。所以成員的名字應該是靜態的。如果你想在運行時添加/刪除屬性,可以看看ExpandoObject。但是你仍然必須指定屬性名稱,如obj.bar,這是你認爲不可能使用動態的方式。

編輯:你已經改變了你的問題,但答案remains.It仍不possible.You不能指定的標識符dynamically.The只有做到使用Reflection Emit。而這種方式是在運行時創建的動態特性的方法你可以給任何名字你想要的屬性。但顯然這不是一個理想的方式,可能會造成你的情況太多的開銷。也許你可以使用Dictionary來達到你想要的效果,但由於你沒有提供任何關於你將在哪裏使用的信息,所以我無法確定。

+0

感謝您的回答。我*修復了*我的問題。 – Brettetete 2015-02-09 23:49:19

1

不清楚你在問什麼。

在你的榜樣,您創建了一個匿名類型與屬性名爲foo,那麼相同類型的_list:

var foo = "bar"; // has no effect on bellow line 
var dyn = new {foo = _list}; // foo will be same type (and value) as _list 

「FOO」內匿名類型是一個場,富在外部範圍一個局部變量。它們是兩個不同的變量參考,它們可以具有相同的參考值(即指向相同的變量),例如在下面的例子中。

也許你的意思是這樣:

var dyn = new {foo = _list}; 
var foo = dyn.foo; 

此外,VAR =動態! var是隱式編譯時定義的類型,dynamic是運行時定義的類型。