获取方法 returns 空
GetMethod returns null
好的,我有这个 class:
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()
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()
return 为空,而 GetField()
完美运行。 tlist
和 tset
不为空,并且 return "List'1" 和 "DataSet" 分别。那为什么会这样?
试试这个:
//Getting FillElem from tUObject
MethodInfo mi = t.GetMethod("FillElem", BindingFlags.Public | BindingFlags.Instance, null, new[] { tlist.MakeByRefType(), tset }, null);
Memoizer 的回答应该有效。
以下代码returns正确数据:
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);
所以你需要搜索另一个问题。您确定传递的类型正确吗?
好的,我有这个 class:
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()
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()
return 为空,而 GetField()
完美运行。 tlist
和 tset
不为空,并且 return "List'1" 和 "DataSet" 分别。那为什么会这样?
试试这个:
//Getting FillElem from tUObject
MethodInfo mi = t.GetMethod("FillElem", BindingFlags.Public | BindingFlags.Instance, null, new[] { tlist.MakeByRefType(), tset }, null);
Memoizer 的回答应该有效。 以下代码returns正确数据:
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);
所以你需要搜索另一个问题。您确定传递的类型正确吗?