2012-03-14 55 views
2

我見過使用名爲AsDynamic()的方法。 IIRC它是一種擴展方法。這個想法是,對於任何對象,你可以調用myObject.AsDynamic()並獲得它的動態版本。「AsDynamic()」在哪裏?

事情是,我找不到AsDynamic()方法,儘管有很多谷歌搜索。我假設它實際上已經實現了自己,我也想這樣做。

我使用的.NET 4客戶端配置文件,我很困惑。 :)

非常感謝提前。

+0

我懷疑實施了庫法我們和你一樣困惑。除了'dynamic myDynamic = myObject;'你在尋找什麼?'? – 2012-03-14 22:10:58

+2

也許http://msdn.microsoft.com/en-us/library/system.json.jsonvalue.asdynamic(v=vs.110).aspx – 2012-03-14 22:11:59

+0

@ L.B。 _「.NET Framework 4.5」_ – gdoron 2012-03-14 22:14:04

回答

4

你可以只分配變量的動態無功

Foo foo = GetFooFromSommehere(); 
dynamic dyn = foo; 

或者將它轉換:

Foo foo = GetFooFromSommehere(); 
var dyn = (dynamic) foo; 

爲什麼要有AsDynamic()方法?
ToList()方法實際上做的東西,而不是鑄造不像dynamic

+2

我不認爲你會得到這個問題的想法。看到這個[鏈接](http://stackoverflow.com/questions/9700293/parsing-complex-json-without-reflected-objects/9700430#9700430)例如哪裏會使用「AsDynamic」 – 2012-03-14 22:21:12

+0

@ L.B。該示例不會執行「AsDynamic」它將JSON解析爲動態對象。這裏沒有提到什麼......我知道'dynamic'可以是有幫助的,但不是'AsDynamic()'方法! – gdoron 2012-03-14 22:23:06

+0

你還是不明白 – 2012-03-14 22:24:50

1

爲什麼不簡單地將一些東西分配給一個動態變量或將其轉換爲動態變量,因爲之後該類型不是安全的,那麼該變量總是應該通過。

如果你想擴展方法:

public static class DynamicExtension 
{ 
    public static dynamic ToDynamic(this T value) 
    { 
     return (dynamic)value; 
    } 
} 
+0

將擴展方法寫入所有類型的只是簡單的演員發聲,讓我說我奇怪。 – gdoron 2012-03-14 22:20:30

+0

@gdoron肯定會這樣做,但它在這裏被要求是這樣的:)並且當你在反射期間是特定的任務時,它肯定會在某些場景中變得更容易。不安全,但它畢竟是反射.. – ntziolis 2012-03-14 22:28:26

+0

AsDynamic更適合這裏的名稱,因爲它只是一個演員。 「To」意味着轉換爲別的東西。 – nawfal 2015-08-01 09:07:17