net GetGenericParameter 获取泛型的参数

有一个DbContext 类别,我想要把DbSet<Account> Accounts 里的Account 类别成员取出来,透过p.PropertyType.GetGenericArguments() 取得泛型属性里的物件,由于它会回传集合,所以用First() 让它回传单笔物件

var queryEntity = from p in typeof(MyDbContext).GetProperties()
                    where p.PropertyType.IsGenericType
                          && p.PropertyType.GetGenericTypeDefinition() == typeof(DbSet<>)
                    select p.PropertyType.GetGenericArguments().First();

GetGenericParameterConstraints 代码例子


using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;

public class MainClass
{
    public static void Main()
    {
        PrintTypeParams(typeof(List<>));
        PrintTypeParams(typeof(List<int>));
        PrintTypeParams(typeof(Nullable<>));
    }
    private static void PrintTypeParams(Type t)
    {
        Console.WriteLine(t.FullName);
        foreach (Type ty in t.GetGenericArguments())
        {
            Console.WriteLine(ty.FullName);
            Console.WriteLine(ty.IsGenericParameter);
            if (ty.IsGenericParameter)
            {
                Type[] constraints = ty.GetGenericParameterConstraints();
                foreach (Type c in constraints)
                    Console.WriteLine(c.FullName);
            }
        }
    }
}

```

作者:spike

分类: Net

创作时间:2023-06-25

更新时间:2024-12-09

联系方式放在中括号之中例如[[email protected]],回复评论在开头加上标号例如:#1