Activator.CreateInstance con parámetros opcionales

¿Alguien sabe cómo instanciar una clase usando un constructor que tiene solo 1 parámetro que es opcional?

He probado ambos

(T)Activator.CreateInstance(typeof(T), new object[] { Type.Missing });

y

(T)Activator.CreateInstance(typeof(T), new object[] { });

Sin éxito... Obtengo MissingMethodException

preguntado el 12 de junio de 12 a las 19:06

1 Respuestas

Esto funcionó:

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

Respondido el 12 de junio de 12 a las 20:06

Para aquellos que se encontraron con esta respuesta y se tropezaron con el Comentario de MSDN "Este indicador solo debe usarse con Type.InvokeMember", con suerte esta SO respuesta le ahorrará el tiempo que me tomó asegurarme de que llamando Activator.CreateInstance también es un uso seguro de eso BindingFlags enumeración- DMac el Destructor

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.