c# - 动态获取参数类型的默认值

标签 c# reflection dynamic

问题

我正在尝试动态获取在 ParameterInfo 中指定的类型的默认值。 _methods[methodName] 返回一个 MethodInfo 对象。

不幸的是,编译器不喜欢 default(paramType) 中的“paramType”位。我很难过。

错误

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;

最佳答案

实现起来非常简单:

public object GetDefault(Type type)
{
    return type.IsValueType ? Activator.CreateInstance(type) : null;
}

关于c# - 动态获取参数类型的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/474841/

相关文章:

C# : dynamic polymorphism with non polymorphic classes

scala - 如何在运行时确定 Scala 类的属性?

mysql - Highcharts动态更新饼图mysql

c# - 如何将 T 添加到 List<T> 中,其中 List<T> 伪装成 'dynamic' 而 T 伪装成 'object' ?

c# - 如果实现在同一个程序集中,为什么部分方法不能公开?

Java : Implicit cast of Object at compile-time doesn't work but work with reflection

尝试在 glassfish 中动态加载类时出现 java.lang.ClassNotFoundException

c# - 获取没有 Content-Disposition 的文件名

c# - 在 page_load 上的内容页上传递母版页控制值

c# - 将 XML 转换为纯文本