【问题标题】:Get ReturnParameter's Name property of a RuntimeMethodInfo object using Reflection (C#)使用反射 (C#) 获取 RuntimeMethodInfo 对象的 ReturnParameter 的 Name 属性
【发布时间】:2012-02-19 18:47:21
【问题描述】:

假设我在 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.DeclaredOnly

我怎样才能得到这个字段名?这种行为应该与属性相同。

提前致谢

【问题讨论】:

    标签: c# reflection methodinfo bindingflags


    【解决方案1】:

    恐怕这是不可能的,因为字段名称是实现代码的一部分,而反射不知道如何检索它。 持久性框架通常使用一种映射来提供此类信息。例如,您可以使用 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;
            }
        }
    

    【讨论】:

    • 首先,谢谢你的回答,它对我很有用。抱歉,我的回复延迟了,在您向我展示使用自定义属性的最简单方法之前,我在这个问题上工作了太多。基于此,不再需要那些 getID 和 setID 方法。 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2010-12-29
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多