You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中通过反射获取构造函数的泛型参数类型

获取C#类构造函数的参数类型

嘿,我来帮你把这个需求落地!你已经摸到门道了,咱们把代码补全,顺便讲清楚每一步怎么拿构造函数的参数类型~

首先先明确你的示例类(我补全了Helper类,避免编译报错):

class Helper { }

class A 
{ 
    public A(Helper help) 
    { 
        // 构造函数内部代码
    } 
}

你已经通过typeof(A)拿到了类的类型,也获取了构造函数数组,接下来只需要遍历每个ParameterInfo对象,就能轻松拿到参数的类型信息。完整的实现代码如下:

using System;
using System.Collections.Generic;
using System.Reflection;

class Helper { }

class A 
{ 
    public A(Helper help) 
    { 
        // 构造函数内部代码
    } 
}

class Program
{
    static void Main()
    {
        Type classType = typeof(A);
        ConstructorInfo[] constructors = classType.GetConstructors();
        
        foreach (ConstructorInfo constInfo in constructors)
        {
            ParameterInfo[] parameters = constInfo.GetParameters();
            if (parameters.Length > 0)
            {
                List<string> paramTypeNames = new List<string>();
                
                foreach (ParameterInfo paramInfo in parameters)
                {
                    // 获取参数的完整类型名称(包含命名空间)
                    string fullTypeName = paramInfo.ParameterType.FullName;
                    paramTypeNames.Add(fullTypeName);
                    
                    // 如果只需要短类型名称(不带命名空间),可以用这个:
                    // string shortTypeName = paramInfo.ParameterType.Name;
                }
                
                // 输出结果示例
                Console.WriteLine($"当前构造函数的参数类型:{string.Join(", ", paramTypeNames)}");
            }
        }
    }
}

关键知识点解释:

  • paramInfo.ParameterType:这是核心属性,直接返回参数对应的Type对象,通过它可以获取类型的各种细节:
    • FullName:带命名空间的完整类型名(比如YourNamespace.Helper)
    • Name:短类型名(比如Helper)
    • Namespace:类型所属的命名空间
  • 如果你的类有多个构造函数,这段代码会遍历所有构造函数,处理每个构造函数的参数列表;要是你只想处理特定构造函数,可以加条件筛选(比如判断参数数量、参数类型等)。

额外小技巧:

  • 想获取参数的名称?用paramInfo.Name就行
  • 如果参数带有自定义特性,用paramInfo.GetCustomAttributes()就能获取到对应的特性实例

内容的提问来源于stack exchange,提问作者Md IstiyaQ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:10:57