2012-04-27 8 views
6

Cuál es el equivalente de reflexión de:Crear instancia predeterminada de tipo

default(object); //null 

Cuando no tengo el tipo hasta el tiempo de ejecución, por ejemplo,

public void Method(Type type) 
{ 
    var instance = type.CreateDefault(); //no such method exists, but I expect there is a way of doing this? 
} 

Respuesta

9

Para cualquier tipo de referencia, el valor predeterminado es una instancia nula. Para cualquier tipo de valor, el valor predeterminado se puede obtener a través del Activator.CreateInstance. Pero cuando se tiene una variable llamada instance que sugiere que usted quiere una instancia real en lugar de una referencia nula ... Así que mientras usted puede hacer esto:

public object GetDefaultValue(Type type) 
{ 
    return type.IsValueType ? Activator.CreateInstance(type) : null; 
} 

... en realidad no es claro cuán útil esto es. El valor predeterminado es del tipo, que no es lo mismo que una instancia predeterminada del tipo.

+0

no, estoy contento con nulo en este caso. Entonces usaré Activator para los tipos de valor, de lo contrario, nulo. Gracias Jon. –

Cuestiones relacionadas