c# - 使用反射获取 RuntimeMethodInfo 对象的 ReturnParameter 的 Name 属性 (C#)

标签 c# reflection methodinfo bindingflags

假设我有以下 C# 类:

public class B : A
{
    public Int32 B_ID;
    public String B_Value;

    public Int32 getID()
    {
        return B_ID;
    }

    public void setID(Int32 value)
    {
        B_ID = value;
    }
}

基于反射,我可以获取 getID() (和/或)setID() 方法使用的字段名称吗? (如果是[B_ID]) 我正在编写一个持久性框架,识别表的键名会很有用,上面的两种方法都包含该键名。

RuntimeMethodInfo 的 ReturnParameter 属性似乎有一个名为 Name 的属性,应该可以帮助我解决此问题,但它为 null。

为了获取 RuntimeMethodInfo 对象,我使用此 BindingFlags 枚举获取 B 类实例的成员:

  • BindingFlags.Public | BindingFlags.Instance | BindingFlags.Instance | BindingFlags.Instance BindingFlags.DeclaredOnly

如何获取该字段名称?此行为应该与属性相同。

提前致谢

最佳答案

恐怕这是不可能的,因为字段名称是已实现代码的一部分,而反射不知道如何检索它。 持久框架通常使用一种映射来提供此类信息。例如,您可以使用 xml 文件,或者可以在字段上使用属性将它们引入为表的键或列,如下所示:

[Table(name="MyTable")]    
public class B : A
    {

[Key(column_name="id")]    
public Int32 B_ID;
        public String B_Value;

        public Int32 getID()
        {
            return B_ID;
        }

        public void setID(Int32 value)
        {
            B_ID = value;
        }
    }

关于c# - 使用反射获取 RuntimeMethodInfo 对象的 ReturnParameter 的 Name 属性 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9352066/

相关文章:

c# - 从非泛型静态类中的泛型重载方法获取 RuntimeMethodInfo

c# - 使用 sharpcompress 创建一个 7zip 压缩包

java - 使用 getMethod 从另一个类调用方法会出现错误

c# - 如何保存 MethodInfo 指针并稍后调用该函数?

c# - 如何通过反射获取泛型参数的类型

c# - 如何设置名称为字符串形式的对象的属性?

c# - .csproj 文件中未通知时,Visual Studio 如何确定输出路径?

c# - 强制 PHP 整数溢出

c# - 在 WPF 中创建 OxyPlot

java - 如何使用反射调用带有 .class(非对象)参数的 java 方法