我正在尝试动态获取ParameterInfo中指定的类型的默认值。 _methods [methodName]返回一个MethodInfo对象。
不幸的是,编译器不喜欢默认(paramType)中的“paramType”位。我很难过。
找不到类型或命名空间名称'paramType'(您是否缺少using指令或程序集引用?)
C:\ Applications \ ... \ MessageReceiver.cs第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;
答案 0 :(得分:26)
实施起来非常简单:
public object GetDefault(Type type)
{
return type.IsValueType ? Activator.CreateInstance(type) : null;
}
答案 1 :(得分:1)
我认为默认只适用于实际类型。这是一个编译器快捷方式而不是实际方法。它适用于泛型。例如:
public void MyMethod<T>(T obj)
{
T myvar = default(T);
}
看看我发布的这个问题: