げんさん日記

プログラミングで気付いた事等を書きます。

プロパティの型を判断する。

2022年07月06日 07時57分53秒 | C#
システム型
if (propertyInfo.PropertyType.Name == "Int32")

NULLL許可型
if (propertyInfo.PropertyType.IsGenericType == true &&       propertyInfo.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>)) 

ジェネリック配列型
if (propertyInfo.PropertyType.IsGenericType == true)

プロパティのジェネリック配列内の型を取得する。

2022年06月30日 10時41分57秒 | C#
プロパティに設定してあるジェネリック内の型を取得する。

var itemType = propertyInfo.PropertyType.GetGenericArguments().First(); 


プロパティの値を取得する。

2022年06月30日 10時02分20秒 | C#
システム型
var value = propertyInfo.GetValue(class); 

ジェネリック型
var values = (IEnumerable)propertyInfo.GetValue(class);



動的に別DLLのインスタンスを作成する。

2022年06月30日 10時02分20秒 | C#
アセンブリをロードする。
var asm = Assembly.Load(DLLパス); 

クラスのタイプを取得する。
var myType = asm.GetType("名前空間" + クラス名);

インスタンスを作成する。
var instance = Activator.CreateInstance(myType);



クラスのメソッドを動的に取得し実行する。

2022年06月30日 09時54分44秒 | C#
クラスのメソッドを取得する。

var classType = class.GetType();
var method = classType.GetMethod("Validation");
var ret = method.Invoke(class, new object[] { value ]);

上記は”Validation”メソッドを取得して実行します。