Equivalente programático de default(Type)
Estoy usando la reflexión para recorrer Type
las propiedades de a y establecer ciertos tipos en sus valores predeterminados. Ahora, podría cambiar el tipo y configurarlo default(Type)
explícitamente, pero prefiero hacerlo en una sola línea. ¿Existe un equivalente programático del default?
Aceptado
- En el caso de un tipo de valor, utilice Activator.CreateInstance y debería funcionar bien.
- Cuando utilice el tipo de referencia, simplemente devuelva nulo
public static object GetDefault(Type type)
{
if(type.IsValueType)
{
return Activator.CreateInstance(type);
}
return null;
}
En la versión más reciente de .net, como el estándar .net, type.IsValueType
debe escribirse comotype.GetTypeInfo().IsValueType
¿Por qué no llamar al método que devuelve default(T) con reflexión? Puedes usar GetDefault de cualquier tipo con:
public object GetDefault(Type t)
{
return this.GetType().GetMethod("GetDefaultGeneric").MakeGenericMethod(t).Invoke(this, null);
}
public T GetDefaultGeneric<T>()
{
return default(T);
}