c# - parameter - Obtener dinámicamente el valor predeterminado de un tipo de parámetro
optional parameter in c# (2)
Pregunta
Estoy intentando obtener dinámicamente el valor predeterminado para un tipo que se especifica en un ParameterInfo. _methods [methodName] devuelve un objeto MethodInfo.
Desafortunadamente, al compilador no le gusta el bit "paramType" dentro del valor predeterminado (paramType). Estoy perplejo.
Error
No se pudo encontrar el tipo o el nombre del espacio de nombres ''paramType'' (¿falta una directiva using o una referencia de ensamblado?)
C: / Aplicaciones / ... / MessageReceiver.cs Línea 113
Ejemplo
object blankObject = null;
foreach (var paramInfo in _methods[methodName].Key.GetParameters())
{
if (paramInfo.Name == paramName)
{
Type paramType = paramInfo.ParameterType;
blankObject = (object)default(paramType);
}
}
parameters[i] = blankObject;
Es bastante simple de implementar:
public object GetDefault(Type type)
{
return type.IsValueType ? Activator.CreateInstance(type) : null;
}
Creo que el valor predeterminado solo funciona con el tipo real. Es un atajo de compilador no es un método real. Funciona bien con genéricos. por ejemplo:
public void MyMethod<T>(T obj)
{
T myvar = default(T);
}
Mira esta pregunta que publiqué hace un tiempo: