【发布时间】:2016-05-18 14:39:29
【问题描述】:
我有一个我想调用的通用方法,但它抛出了下面的异常:
对象引用未设置为对象的实例。
实际上是GetMethod(...) 等于null。 但是我找不到我做错的地方,因为我在另一个班级有一个非常相似的功能。 这是简单的代码:
Class DatabaseSyncronizor
{
...
internal void SyncronizeAll()
{
for(int i=0;i<MyList.Count();i++)
{
Type type=Type.GetType(MyModelClass);
typeof(DatabaseSyncronizor).GetMethod("Synchronize",BindingFlags.NonPublic|BindingFlags.Instance).MakeGenericMethod(type).Invoke(this, null);
}
}
private void Syncronize<T>() where T :class,IDate
{
IGenericService<T> service = new GenericService<T>(new UnitOfWorkFactory(_connectionString));
...
}
}
感谢您的帮助!
问候, 蕾欧娜
【问题讨论】:
-
很明显GetMethod是找不到方法的。请检查相关方法的拼写。
-
请粘贴您的代码,不要在框中输入。
BingdingFlags而不是BindingFlags显然是一个错字 - 您的问题的原因可能是一个错字 - 但我们无法确定,除非我们看到 exact 代码。 -
MyModelClass变量的内容是什么?如果您对此的反应是“这不是变量,那是类的名称”,那么这是非法语法:Type.GetType(MyModelClass)。 -
感谢以上所有人。我犯了一个拼写错误......很抱歉用这个愚蠢的问题向stackoverflow发送垃圾邮件并用你所有的时间来分析我的代码:-(
-
这不是完全的浪费...我在忘记添加 NonPublic 绑定标志后到达这里,您的帖子立即解决了我的问题。谢谢!