parametros parameter opcionales c# reflection dynamic

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:

Valor predeterminado para genéricos