繁体   English   中英

GetMethod返回null

[英]GetMethod returns null

好吧,所以我有这个课:

public class tUObject
{
    public const string strSelect = "SELECT Id, cName, Major FROM tUObject WHERE Id = ";

    //constructors and stuff...

    public virtual void FillElem(ref List<tUObject> l, DataSet ds)
    {
        //...
    }
}

MainWindow()我想使用GetMethod()进入FillElem() GetMethod()

static List<tUObject> obj = new List<tUObject>();
static DataSet objDataSet = new DataSet();
//...
string strClass = objDataSet.Tables[0].Rows[0]["Class"].ToString(); //"tUObject"
Type t = Type.GetType("UniDB_WPF." + strClass);  //tUObject with the assembly name
Type tlist = obj.GetType();                      //list<tUObject>
Type tset = objDataSet.GetType();                //DataSet

//Getting strSelect from tUObject
string strAccessSelect = t.GetField("strSelect").GetRawConstantValue().ToString() + ((int)item.Tag).ToString();
//...
//Getting FillElem from tUObject
MethodInfo mi = t.GetMethod("FillElem", BindingFlags.Public, null, new[] { tlist, tset }, null);

问题是, GetMethod()返回null,而GetField()完美运行。 tlisttset不为null,分别返回“ List'1”和“ DataSet”。 那么为什么会这样呢?

尝试这个:

//Getting FillElem from tUObject
MethodInfo mi = t.GetMethod("FillElem", BindingFlags.Public | BindingFlags.Instance, null, new[] { tlist.MakeByRefType(), tset }, null);

备忘录的答案应该起作用。 以下代码返回正确的数据:

public class Test
{
    public virtual void Test1(ref List<object> t1, object t2)
    {

    }
}

和方法要求

var t = new Test();
var mi = t.GetType().GetMethod("Test1", BindingFlags.Instance | BindingFlags.Public, null, new Type[] { typeof(List<object>).MakeByRefType(), typeof(object) }, null);

在此处输入图片说明

因此,您需要搜索另一个问题。 您确定要传递正确的类型吗?

暂无
暂无

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

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