我有这样的课程:
Public Class MyXElement
Inherits XElement
Public Sub New(other As XElement)
MyBase.New(other)
End Sub
Public Sub New(name As XName)
MyBase.New(name)
End Sub
Public Sub New(other As XStreamingElement)
MyBase.New(other)
End Sub
Public Sub New(name As XName, content As Object)
MyBase.New(name, content)
End Sub
Public Sub New(name As XName, ParamArray content() As Object)
MyBase.New(name, content)
End Sub
End Class
为什么以下代码失败?
Dim x1 As XElement = <demo></demo>
Dim x2 As MyXElement
x2 = x1
我得到异常:无法将“System.Xml.Linq.XElement”类型的对象强制转换为“MyXElement”。
答案 0 :(得分:2)
很简单 - x1
不是MyXElement
对象!这与尝试以下内容相同:
Dim o1 as Object = new Object()
Dim o2 as String
o2 = o1
String
继承Object
这一事实并不意味着您可以将Object
变量分配给String
它的另一种方式。您可以轻松地写下以下内容:
Dim x1 As MyXElement = new MyXElement("name")
Dim x2 As XElement
x2 = x1
答案 1 :(得分:0)
Marcin解释了为什么它不起作用。我的回答显示了将XElement
转换为MyXElement
时需要执行的操作。
您需要使用在MyXElement
上定义的构造函数:
Dim x2 = new MyXElement(x1)