我正在尝试初始化DataEditor< Student>的对象,其中我的DataEditor< T> class实现接口IDataEditor< T>其中T:IEditableObject.
DataEditor<Student> editor = GetEditorFor(student);
在运行时,我遇到了一个TypeLoadException:
‘Namespace.IDataEditor`1 [T]’上的GenericArguments [0],’Namespace.Data.Student’违反了类型参数’T’的约束.异常发生在上面的行上,甚至在它进入GetEditorFor方法之前.
对T的唯一约束是IEditableObject,我的Student类清楚地实现了它(我仔细检查了界面拼写,命名空间等),而且编译器也没有给我任何错误,所以我不知道为什么会出现这个错误在运行时.
如果我删除IEditableObject约束,代码运行没有此异常,但我的逻辑依赖于类是IEditableObject,所以它不是一个选项.
知道为什么会这样,以及如何解决它?
> https://connect.microsoft.com/VisualStudio/feedback/details/270717/reflection-emit-chokes-on-method-type-parameters
> http://bytes.com/topic/c-sharp/answers/478595-reflection-generics-could-anyone-confirm-deny-bug
编辑:声明请求
public class DataEditor<T> : viewmodel,IDataEditor<T> where T : IEditableObject public interface IDataEditor<T> : IDataEditor where T : IEditableObject
解决方法
原文地址:https://www.jb51.cc/csharp/99020.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。