我有一个课程,我们将调用MyClass。在里面我有一些反序列化代码,我希望能够从对象内部调用。是否有更简洁的方法从类中分配与类关联的值。 这就是我现在正在做的事情
Public Class MyClass
Public Property Prop1 as New String(String.empty)
Public Property Prop2 as New String(String.empty)
Public Property Prop3 as Boolean = False
Public Sub LoadXML(ByVal XMLText as String)
Dim MyTemp as New MyClass
MyTemp = CType(DeSerialize(XMLText, MyTemp.Type), MyClass) 'this returns an object
Me.Prop1 = MyTemp.Prop1
Me.Prop2 = MyTemp.Prop2
Me.Prop3 = MyTemp.Prop3
End Sub
End Class
我无法将 MyTemp 的结果分配给 Me (表面上代表相同的对象类型),但我可以分配所有属性 MyTemp 到我的属性因为我的实际类更复杂(我在示例中使用了原语 - 但实际上是一个非常大的类,其属性是许多其他类)我想知道是否有更好的方法来赋值 MyTemp < / strong>到班级的实例。
答案 0 :(得分:0)
将LoadXML
声明为只返回反序列化对象的shared
函数可能会好得多。那样,而不是
dim myClassInstance = new MyClass();
myClassInstance.LoadXML(...)
你会做
dim myClassInstance = MyClass.LoadXML(...);
你不需要做所有的财产复制。
(抱歉,VB生锈了)
答案 1 :(得分:0)
您可能想要创建一个共享函数,该函数将返回MyClass的实例来代替构造函数。
Public Shared Function LoadXML(ByVal XMLText As String) As MyClass1
Dim MyTemp As New MyClass1
MyTemp = CType(DeSerialize(XMLText, MyTemp.GetType()), MyClass1)
Return MyTemp
End Function
您可以运行它来创建类的初始实例,因此不是调用new,而是调用MyClass.LoadXML(xmlString)。