繁体   English   中英

如何基于C#中的方法签名获取方法的唯一ID?

[英]How to get a unique id for a method based on its signature in c#?

无论如何,我可以使用基于其签名的反射为特定类中的每个方法获取一个uniqueId? 我知道GetHashCode方法,但是我想保证唯一性。

方法的Type.FullName + MemberInfo.Name +参数类型,任何较短的内容都不是唯一的。

如果您想将其范围限定为特定类型-不需要类型的FullName。 如果仅在运行时需要它-MemberInfo对象本身可能是最好的选择。

它必须有多独特? 什么尺寸?

如果仅使用逗号连接返回类型和每个参数类型,则您将拥有一个唯一标识此签名的字符串。 它也恰好对签名进行了完全编码,但这并不一定是不好的。

如果您想要更短的内容,可以:

  • 使用加密哈希函数对其进行哈希处理。 速度很慢,散列很长,但极有可能是唯一的
  • 使用简单的哈希函数对其进行哈希处理。 可能会发生冲突,但Id较短。
  • 将它们存储在某种查找表或数据库中。 这样,您的ID就是连续的整数。

使用System.Reflection命名空间:
http://msdn.microsoft.com/zh-CN/library/system.reflection.aspx

方法名称:
System.Reflection.MethodBase.GetCurrentMethod()。名称

方法类型:
System.Reflection.MethodBase.GetCurrentMethod()。DeclaringType

方法参数:
System.Reflection.MethodBase.GetCurrentMethod()。GetParameters()。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM