私はDictionary<string,string> dictionary
を持っています。ここでキーはプロパティの名前を保持し、値は対応する値を保持します。私はいくつかの異なるモデルとそれらの異なるモデルを扱うGenericクラスを持っています。私はパターンマッチングによって関連するプロパティの値を設定しようとしています(良い方法がない限り)。c#汎用クラスのパターンマッチングプロパティ?
var record = new T();
foreach (var property in ReflectiveOps.Properties(record))
{
if (dictionary.ContainsKey(property.Name))
{
switch ...???
私はproperty.PropertyType
、その後case int
とcase int i
を切り替える試みたが、それは動作しませんでした。私はif(property.PropertyType.Name == "int"{...}
を行うことができます - それは動作します。スイッチでこれを行うことはできますか?
'property.PropertyType == typeof(int)'はより良いでしょう –
@PatrickHofman:はい、しかし、それも 'if..then'ステートメントでしか動作しないようです。ケースに入れると、一定の値が予想されるというエラーが表示されます。 – ToshiBoy
@PatrickHofmanしかし、素晴らしい提案です...(atmを捕まえるバグ、 "int32"という名前が "int"と違うが、あなたの 'typeof'と同じであることが分かった:-) – ToshiBoy