このようなジェネリックタイプを構築する方法はありますか?タイプから汎用タイプを構築するにはどうすればよいですか?
私はそれが不可能かもしれないことを知っています。回避策を取得するには:いくつかのプロパティの設定のためにデリゲートAction<T>
を作成します。
var type = propertyInfo.PropertyType;
var defaultVal = type.IsValueType ? Activator.CreateInstance(type) : null;
var setter = (Action<object>)propertyInfo
.GetSetMethod(true)
.CreateDelegate(typeof(Action<object>), this);
var resetter = new Action(() => setter(defaultVal));
return resetter;
これは機能しません。正確に一致する型を渡さなければならないからです。プロパティーセッターが2倍の場合、私はAction<double>
を渡さなければなりません。
私はジェネリックコンテナタイプと基本タイプを手元に持っています。どうすればそれらを混ぜることができますか?私はグループクラスから取られたプロパティのに取り組んでいます
注意。 ではない単一のプロパティ。
var props = GetType().GetProperties(Flags);
非常にきれいなアプローチを。私はそれを自分自身の質問に答えるので、答えとしてマークします。 (今、私は 'DynamicInvoke'のほうが良いか' SetValue'か、もっと良い方法があるということを念頭に置いて質問しています) –