使用反射获取类变量值

时间:2011-12-27 12:07:47

标签: c# reflection

在我的业务逻辑中,我为数据库操作创建了类,例如insert,update等。 为此,我创建了一个类CDatabase,其中set设置了一些方法,如openconnection和closeconnection transation等。

现在我的逻辑类继承了该类

CAnswerLogic : CDatabase
{
   OpenConnection();
   BeginTrans();
   Command.CommandText = "PKG_ANSWER.PROC_ADD_ANSWERS";
}

我可以使用反射获取Command.CommandText的值。 Command是CDatabse类中的一个属性。

我编写了一个方法来返回类的所有方法

private IEnumerable<string> GetAllMethod(string pstrClassName)
{
    const BindingFlags flags = BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static;

    var llistMethod = new List<string>();
    var assembly = Assembly.LoadFile(Server.MapPath(@"bin/InfoDomeBLL.dll"));
    try
    {
        foreach (Type type in assembly.GetTypes())
        {
            if (type.IsClass && type.Name == pstrClassName)
            {
                var method = type.GetMethods(flags);
                foreach (var methodInfo in method)
                {
                    llistMethod.Add(methodInfo.Name);

                    //var mb = methodInfo.GetMethodBody();
                    //foreach (LocalVariableInfo lvi in mb.LocalVariables)
                    //{
                    //    Response.Write("Local variable: " + lvi);
                    //}
                }
                var basetype= type.BaseType;
            }
        }
    }
    catch (Exception)
    {
    }

    return llistMethod;
}

在web项目中,我添加了bll项目的引用。 请帮助我。

1 个答案:

答案 0 :(得分:1)

如果您使用type.GetProperties(flags);代替type.GetMethods(flags);,则会找到您要查找的媒体资源。然后,执行propertyInfo.GetValue( Command, null );以获取值。