I am trying to dynamically get the default for a type that is specified in a ParameterInfo. _methods[methodName] returns a MethodInfo object.
Unfortunately, the compiler doesn't like the "paramType" bit inside the default(paramType). I'm stumped.
The type or namespace name 'paramType' could not be found (are you missing a using directive or an assembly reference?)
C:\Applications\...\MessageReceiver.cs Line 113
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;
It's quite simple to implement:
public object GetDefault(Type type)
{
return type.IsValueType ? Activator.CreateInstance(type) : null;
}
I think default only works with the an actual type. It's a complier shortcut not an actual method. It works well with generics. for example:
public void MyMethod<T>(T obj)
{
T myvar = default(T);
}
Check out this question I posted a while back:
Default Value for Generics
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With