带有可选参数的Activator.CreateInstance

Con*_*ark 19 reflection .net-4.0 optional-parameters

有没有人知道如何使用只有一个可选参数的构造函数来实例化一个类?

我试过了两个

(T)Activator.CreateInstance(typeof(T), new object[] { Type.Missing });
Run Code Online (Sandbox Code Playgroud)

(T)Activator.CreateInstance(typeof(T), new object[] { });
Run Code Online (Sandbox Code Playgroud)

没有成功......我遇到了MissingMethodException

Con*_*ark 30

这有效:

(T)Activator.CreateInstance(typeof(T), 
                    BindingFlags.CreateInstance |
                    BindingFlags.Public |
                    BindingFlags.Instance | 
                    BindingFlags.OptionalParamBinding,null, new object[] {Type.Missing },CultureInfo.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)

  • 对于那些遇到这个答案并被[MSDN评论](http://msdn.microsoft.com/en-us/library/system.reflection.bindingflags.aspx)绊倒的人来说,"这个标志只能用于Type.InvokeMember",希望[这个SO答案](http://stackoverflow.com/questions/1295344/difference-between-activator-createinstance-and-typeoft-invokemember-with)将节省您花时间确保调用`Activator.CreateInstance`也是'BindingFlags`枚举的安全用法 (3认同)