C 使用dynamic型別訪問JObject物件

2022-10-06 05:33:09 字數 831 閱讀 6343

dynamic是c#裡面的動態型別,可在未知型別的情況訪問對應的屬性,非常靈活和方便。

使用json.net可以把乙個json字串轉換成乙個jobject物件,如果有已知強型別,如果有已知對應的強型別,可以直接轉成對應的型別。但如果沒有,要訪問json裡面對應的資料的時候,就顯得比較麻煩。我們可以借助dynamicobject來訪問對應的屬性。

dynamicobject

我們要建立乙個程式設計客棧動態類,用於訪問jobject,**如下:

public class jobjectaccessor : dynamicobject

public override bool trygetmember(getmemberbinder binder, out object result)

private object populate(jtoken token)

www.cppcns.com else if (token.type == jtokentype.array)

return objectaccessors;

}else

}}接下來就可以開始使用它了:

string json = @",'pets': }";

jobject jobj = jobject.parse(json);

dynamic obj = new jobjectaccessor(jobj);

console.writeline($": ");

console.writeline($": ");

執行一下程式,看一下輸出結果:

本文標題: c#使用dynamic型別訪問jobject物件

本文位址:

C 資料型別(dynamic)

自己在寫重構的時候用到了dynamic這個函式,然後就去網上找個找關於這個函式的有關內容,首先是對這個函式認識。關於這個函式乙個籠統的認識就是這個函式和var一樣是個萬能函式,什麼樣的資料型別符合,如果我們在用到用於接受一些資料的時候,但是這個傳過來的資料型別我們不知道是什麼型別的,那我們就可以用d...

Dynamic 動態型別 和雙問號 的使用

1.dynamic關鍵字用於宣告乙個動態物件,然後通過該動態物件去呼叫方法或讀寫屬性。以前我們都是在執行時通過反射,emit,codedom等技術來完成。建立乙個dynamic型別的物件需要使用乙個特殊的構建器叫expandoobject。dynamic aehyok new expandoobje...

C 4 0跨程式集使用 dynamic

今天寫 時偷懶用了dynamic,結果遇到問題,執行時始終無法獲取dynamic物件的屬性。原問題簡化後如下 程式集a包含sampleclass類,有乙個靜態方法,接收乙個dynamic型別引數並將其value屬性輸出。public class sampleclass 程式集b引用程式集a並呼叫ou...