リフレクションを介してプロパティに値を割り当てる必要があります。これまでにテストしたすべてのケースで、タイプが。のケースを除いて問題ありませんSystem.Reflection.Missing
。たとえば、これはクラスです。
public class SomeClass
{
public System.Reflection.Missing MissingProp { get; set; }
}
そして、これはリフレクションを通じてプロパティに割り当てるコードです。
var inst = new SomeClass();
var prop = typeof (SomeClass).GetProperty("MissingProp");
prop.SetValue(inst, Missing.Value, null);
そして、これは私が受け取っている例外です:
System.ArgumentException: Missing parameter does not have a default value.
Parameter name: parameters
at System.Reflection.MethodBase.CheckArguments(Object[] parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index)
at ClassesWithNoProperties.Program.Main(String[] args) in D:\Documents\Documents\Visual Studio 2010\Projects\C#\ClassesWithNoProperties\ClassesWithNoProperties\Program.cs:line 24
プロパティに値を割り当てるために同じコードを使用する非常に多くのケースでライブラリをテストしましたが、これがそのSystem.Reflection.Missing
ような動作を観察している唯一のケース()です。
C#でこの種の割り当てを実現するにはどうすればよいですか?