作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个派生自 ObservableCollection 的类,并将其自身限制为仅与特定基类 (BaseMetadata) 一起使用。它还需要实现 IXmlSerializable 接口(interface),因为我正在向集合中添加持久性功能。
这是集合的类定义...
public class CollectionMetadata<T> : ObservableCollection<T> where T : BaseMetadata,
IXmlSerializable
{
XmlSchema IXmlSerializable.GetSchema()
{
return null;
}
public void ReadXml(XmlReader reader)
{
}
public void WriteXml(XmlWriter writer)
{
}
}
...BaseMetadata 可以简化为一个空类,但仍然会产生错误...
public class BaseMetadata
{
}
...我收到以下错误....
CollectionMetadata<T>.IXmlSerializable.GetSchema()':
containing type does not implementinterface
'System.Xml.Serialization.IXmlSerializable'
...在上面代码的下一行...
XmlSchema IXmlSerializable.GetSchema()
我一定是遗漏了一些非常明显的东西?
最佳答案
在当前形式中,您正在应用 IXmlSerializable
作为对 T
的约束;没有将其声明为 CollectionMetadata<T>
的接口(interface).所以你的显式接口(interface)实现是在提示,因为它找不到接口(interface)。
你只需要移动 IXmlSerializable
在约束之前的接口(interface):
public class CollectionMetadata<T> : ObservableCollection<T>, IXmlSerializable
where T : BaseMetadata
作为旁注 - 您为此使用显式接口(interface)实现可能是一件非常好的事情,否则这可能会在以后成为一个真正的难题。因为作为公共(public)方法,编译器此时不会提示,但如果您尝试将集合作为 IXmlSerializable
传递,编译器会提示。 .
关于c# - 定义具有泛型继承和接口(interface)的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11574338/
我是一名优秀的程序员,十分优秀!