检测接口泛型类型参数的差异
有没有办法反映接口以检测其泛型类型参数和返回类型的差异?换句话说,我可以使用反射来区分这两个接口吗:
interface IVariant<out R, in A>
{
R DoSomething(A arg);
}
interface IInvariant<R, A>
{
R DoSomething(A arg);
}
两者的 IL 看起来相同。
Is there a way to reflect on an interface to detect variance on its generic type parameters and return types? In other words, can I use reflection to differentiate between the two interfaces:
interface IVariant<out R, in A>
{
R DoSomething(A arg);
}
interface IInvariant<R, A>
{
R DoSomething(A arg);
}
The IL for both looks the same.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 GenericParameterAttributes 枚举确定泛型类型的差异标志。
要获取泛型类型,请使用
typeof
但省略类型参数。保留逗号以指示参数数量(来自链接的代码):然后您可以检查类型参数标志:
There is a GenericParameterAttributes Enumeration that you can use to determine the variance flags on a generic type.
To get the generic type, use
typeof
but omit the type parameters. Leave in the commas to indicate the number of parameters (code from the link):You can then examine the type parameters flags: