C# リフレクションと機能チェックの詳細な紹介
反射とプロパティ
.net Framework によって提供されるリフレクションおよび機能テクノロジを使用して、データの再現性をチェックし、特定のデータをデータベース テーブルに書き込むかどうかを決定できます。
要件
エンティティがデータベースにデータを書き込むとき、たとえば、ID 番号が重複できないことを前提として、新しく作成された個人の場合、データが重複しているかどうかを確認する必要があることがよくあります。 、この時点で新しく作成された個人の ID。この番号が人事テーブルの 1 つ以上のエントリと重複している場合は、プロンプトを表示するか、更新または削除などの他の措置を講じる必要があります。
方法
この需要シナリオでは、.net Framework が提供する機能とリフレクション テクノロジを使用して、そのようなニーズを解決できます。具体的なプロセスは、
次に、エンティティ クラスで書き込んだばかりの属性クラスを参照して、その一意の識別子 (1 つ以上の属性の組み合わせ) を構築します
最後に、データの再現性をチェックするときに、Attribute によって提供されるメソッドを使用します。各エンティティ クラスの一意の識別属性を取得します。
Attribute[] GetCustomAttributes(modeltype, inherit);
KeyFieldAttribute属性クラス
public class KeyFieldAttribute:Attribute { private static List<string> keyfields = new List<string>(); /// <summary> /// 构造关键属性 /// </summary> /// <param name="fields"></param> public KeyFieldAttribute(params string[] fields) { foreach (string kf in fields) { if (!keyfields.Contains(kf)) keyfields.Add(kf); } } public static List<string> KeyFields { get { return keyfields; } } }
EntityクラスModel
[KeyField("ID")]public class Person { public int ID {get;set;} //人员ID public string Name {get;set;}//人员名称 public DateTime BirthDate {get;set;} //出生年月日} [KeyField("RoleGroupID","RoleCode")] public class Role { public int RoleGroupID { get; set; } //角色组别ID public string RoleCode { get; set; } //角色编号 public string RoleName { get; set; }//角色名称 }
ここで、KeyFieldAttributeの接尾辞Attributeは省略できるので、KeyFieldはKeyFiに相当する略語です。フィールド属性。
機能クラスを使用します:
KeyFieldAttribute.GetCustomAttributes(typeof(Person), true); List<string> fields = KeyFieldAttribute.KeyFields; //获取到Person实体的唯一标识属性ID KeyFieldAttribute.GetCustomAttributes(typeof(Role), true); var fields = KeyFieldAttribute.KeyFields;//Role实体唯一属性,2个属性组合:RoleGroupID,RoleCode
機能によって返されたキー属性の組み合わせを使用して、データベース内のデータをクエリします。少なくとも 1 つのレコードが見つかった場合は、特定のロジックに従って処理されます。見つからない場合は、新しいデータが処理されます。直接書かれること。 Attribute クラスで提供されるメソッドの説明:
/// <summary>/// 检索应用于类型的成员的自定义特性的数组。 /// </summary>/// <param name="modeltype">要搜索的自定义特性的类型</param> ///<param name="inherit">是否搜索成员的祖先</param> /// <returns>自定义特性的数组</returns>Attribute[] GetCustomAttributes(modeltype, inherit);
上記は、C# リフレクションと機能重複チェックの詳細な紹介です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









C# を使用した Active Directory のガイド。ここでは、Active Directory の概要と、C# での動作方法について、構文と例とともに説明します。

C# データ グリッド ビューのガイド。ここでは、SQL データベースまたは Excel ファイルからデータ グリッド ビューをロードおよびエクスポートする方法の例について説明します。

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。
