![]() |
1
8
您需要System.Reflection.ParameterInfo.ParameterType.IsGenericParameter。下面是一个通过的VS2008单元测试,说明了这一点: 班级:
试验方法:
这里值得注意的一点是parms[0].ParameterType.IsGenericParameter检查,它检查参数是否为泛型。 一旦找到了构造函数,就可以通过constructrinfo来发出。
但不完全确定你的意图是什么。 |
![]() |
2
2
稍微澄清一下。两个构造函数都不是泛型方法。它们是泛型类上的普通方法。对于要成为“泛型”的方法,它必须具有泛型参数。因此,执行类似“IsGenericMethod”的测试将返回false。 简单地查看参数并确定它们是否是通用的也不容易。对于您提供的示例,可以遍历参数并查找通用参数。同时考虑以下代码
你需要考虑像这样的项目。 编辑 之所以将所有参数都视为字符串,是因为在获取构造函数之前显式绑定了foo类型。尝试将代码切换到使用未绑定foo的以下代码,这样将在方法中返回泛型参数。
|
![]() |
3
0
你可以查一下 Type.GetGenericArguments 结果类型,并将其与构造函数参数类型进行比较。 只需调用类型不相同的(类型!= Type(t)。 |
![]() |
4
0
当你说你想调用具体的构造函数时,你能再解释一下你想要完成什么吗?我只是好奇是否还有其他方法可以解决您的问题,而不必检测构造函数是否包含泛型参数。 我正在考虑将构造函数链接起来或将逻辑构建到通用构造函数中,以便在传入的参数是字符串的情况下以某种方式工作,例如:
另一种选择是创建FOO的具体实现,比如:
并在后代的构造函数中嵌入任何特定的逻辑。沿着这条路径的所有类型的选项都是可能的,因此您可以避免从那个类中反射信息。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |