将值分配给当前类的实例

时间:2016-04-05 21:34:49

标签: vb.net

我有一个课程,我们将调用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>到班级的实例。

2 个答案:

答案 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)。