c# dynamic動態類型和匿名類

来源:https://www.cnblogs.com/lxhbky/archive/2019/10/11/11655320.html
-Advertisement-
Play Games

為表示對原作者的尊重,先貼出原文鏈接:https://www.cnblogs.com/hnsongbiao/p/8250956.html 以下是正文: dynamic類型簡單示例 動態添加欄位 List<string> fieldList = new List<string>() { "Name", ...


為表示對原作者的尊重,先貼出原文鏈接:https://www.cnblogs.com/hnsongbiao/p/8250956.html

以下是正文:

 

dynamic類型
簡單示例

dynamic expando = new System.Dynamic.ExpandoObject(); //動態類型欄位 可讀可寫
expando.Id = 1;
expando.Name = "Test";
string json = Utils.ConvertJson.JsonEncode(expando);  //輸出{Id:1,Name:'Test'}

 動態添加欄位

List<string> fieldList = new List<string>() { "Name","Age","Sex"}; //From config or db
dynamic dobj = new System.Dynamic.ExpandoObject();

var dic = (IDictionary<string, object>)dobj;
foreach (var fieldItem in fieldList)
{
  dic[fieldItem] = "set "+fieldItem+" value";  /*實現類似js里的 動態添加屬性的功能

                                                                        var obj={};
                                                                        var field="Id";

                                                                        eval("obj."+field+"=1");

                                                                        alert(obj.Id); //1  */


}
var val = dobj.Name; //“set Name value”

var val1=dobj.Age;//”set Age value“

 枚舉該對象所有成員

foreach (var fieldItem in (IDictionary<String, Object>)dobj)
{
  var v = (fieldItem.Key + ": " + fieldItem.Value);
}
匿名類

//var aaaa = new {Id=1,Name="Test"}; //匿名類欄位只讀不可寫

dynamic aaaa = new {Id=1,Name="Test"}; //匿名類欄位只讀不可寫
aaaa.Id = 2; //不可寫 報錯無法為屬性或索引器“<>f__AnonymousType1<int>.Id”賦值 - 它是只讀的

 

dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject("{Name:'aa',Sex:'Male',Age:11}");
var name = obj.Name.Value; //aa

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、安裝好python2和python3,配置好全部環境變數 環境變數修改後,需要重新啟動命令行才有效 2、如何啟動不同版本的python 啟動的時候會執行python.exe,python2和pythin3都有這個執行文件,到底啟動哪一個,看環境變數,哪個在前面就先執行哪個 不同版本共存 第一種方 ...
  • double a = 0.0;//最終Π的結果 double類型 int n; for (n = 1; n <= 2000; n++) { if (n % 2 == 1) { a += 1.0 / (2 * n - 1); } else { a -= 1.0 / (2 * n - 1); } } a ...
  • 索引器 使用索引示例: 運行: ...
  • 這些年來有相當多的.net開發者轉了其他語言,也有一部分是迫不得已因為公司的轉型而轉,其中也有一大部分覺得.net沒前途性能不好比某些語言性能差.還有一部分會說出一些名詞去指責.net說他做不到,其實這完全不然,微軟和社區做了相當大的工作使 .Net Core 脫穎而出,成為一個具有競爭里的框架.幫 ...
  • 特殊語句 yield語句 運行結果: checked 和 unchecked 語句 用於控制整型類型算術運算和轉換的溢出檢查上下文 lock語句 它的作用是鎖定某一代碼塊,讓同一時間只有一個線程訪問該代碼塊 ...
  • asp.net core 在iis上運行拋出502.5運行拋出異常 環境說明 已安裝 .net core runtime 2.1.401 已安裝 .net core 2.1.3 運行狀況說明: 直接在命令行運行dotnet 命令可以啟動站點 訪問iis的站點拋出502.5錯誤 可能原因已經解決方法 ...
  • public class MD5Help { //此代碼示例通過創建哈希字元串適用於任何 MD5 哈希函數 (在任何平臺) 上創建 32 個字元的十六進位格式哈希字元串官網案例改編 /// <summary> ///獲取32位md5加密 /// </summary> /// <param name=... ...
  • 首先,我們先來實現主界面的扁平化 此處分為兩個步驟,第一步是更改winform自帶的MainForm窗體屬性,第二步是添加窗體事件。 將主窗體FormBorderStyle更改為None,這樣就得到了一個無邊框的窗體(winform自帶邊框太醜。。) 調節背景色,建議找到自己喜歡的顏色,然後使用取色 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...