c 利用Attribute實現類的轉換

2021-10-06 17:51:26 字數 1613 閱讀 8195

背景

客戶端接入了多家廠商的產品,這時候需要將各家廠商定義的類,統一成我們自己的類。

利用反射實現,不必乙個乙個手動去新建物件賦值。

缺陷:目前只能轉系統自定義的基本型別,無法轉換複雜型別(類中包含類,或者list)

1.定義類中我們要轉換的物件

[attributeusage(attributetargets.property, allowmultiple = false, inherited = false)]

public class entityattribute : attribute

}private type _dbtype;

/// /// 字段型別

///

public type dbtype

}public entityattribute(string fields)

/// /// 標準

///

///

///

public entityattribute(string fields, type dbtype)

}

2.幫助類用來進行互相轉換

public static c servertoclient(s serverobj) where c : new()}}

}}

return clientobj;

}public static s clienttoserver(c clientobj) where s : new()

break;}}

}}

}return serverobj;

}

3.測試

class program

}public class schoolreportclient

public string grade

public scoreclient scoretest

public listscores

public listscoreslist

}public class scoreclient

public int score

}public class schoolreportserver

[entity("grade")]

public string grade

// [entity("scoretest", typeof(scoreclient))]

public scoreserver scoretest

// [entity("scores", typeof(list))]

public listscores

[entity("scoreslist", typeof(list))]

public listscoreslist

}public class scoreserver

[entity("score", typeof(int32))]

public int score

public scoreserver(string subject, int score)

}

利用Attribute簡化SQL刪除操作

昨天跟朋友聊天,發現他們的專案資料層使用的是最基礎的純sql語句 sqlparameter進行資料互動的,大家知道select update create對於表的依賴性比較大,然後刪除語句卻不一樣,它的語法比較簡單,大致有以下幾種 1 delete from tablename 2 delete f...

c 利用模板類實現氣泡排序

模板是一種對型別進行引數化的工具,通常有兩種形式 函式模板和類模板。函式模板針對僅引數型別不同的函式 類模板針對僅資料成員和成員函式型別不同的類。函式模板的格式 template 返回型別 函式名 引數列表 1 template和class是關鍵字,class可以用typename關鍵字代替,在這裡...

C 使用特性 Attribute 來漢化列舉類

一 新建列舉 public enum crud 二 新建特性類public sealed class chineseattribute attribute public chineseattribute string chinese 未漢化 三 利用反射獲取特性 這裡我們寫乙個列舉類的擴充套件方法 ...