【发布时间】:2020-04-08 15:32:30
【问题描述】:
谁能解释一下为什么我看到了我所看到的(下面的控制台截图)?对于“ref”和非“ref”方法参数,我从 Reflection 获得了不同的泛型相关属性。我正在使用 .NET 4.8(经典的 .NET Framework)。
public class MyClass {
public class Aref
{
public virtual void method(object je, ref List<MyClass> batchlist, object doc)
{
}
}
public class A
{
public virtual void method(object je, List<MyClass> batchlist, object doc)
{
}
}
private static void WriteGenericProps(Type type)
{
var method = type.GetMethod(nameof(Aref.method));
var param = method.GetParameters().First(p => p.Name == "batchlist");
Console.WriteLine(nameof(param.ParameterType.IsByRef) + "=" + param.ParameterType.IsByRef);
Console.WriteLine(nameof(param.ParameterType.IsGenericType) + "=" + param.ParameterType.IsGenericType);
Console.WriteLine(nameof(param.ParameterType.ContainsGenericParameters) + "=" + param.ParameterType.ContainsGenericParameters);
Console.WriteLine(nameof(param.ParameterType.IsConstructedGenericType) + "=" + param.ParameterType.IsConstructedGenericType);
Console.WriteLine(nameof(param.ParameterType.IsGenericParameter) + "=" + param.ParameterType.IsGenericParameter);
Console.WriteLine(nameof(param.ParameterType.IsGenericTypeDefinition) + "=" + param.ParameterType.IsGenericTypeDefinition);
}
static void Main(string[] args)
{
var t = typeof(Aref);
Console.WriteLine(t.Name);
WriteGenericProps(t);
Console.WriteLine();
t = typeof(A);
Console.WriteLine(t.Name);
WriteGenericProps(t);
}
}
【问题讨论】:
标签: c# .net generics reflection