gpt4 book ai didi

xml - 如何将 ns1.MyPersonalClass 转换为 ns2.MyPersonalClass ?他们拥有相同的属性(property)或成员

转载 作者:行者123 更新时间:2023-12-04 17:03:17 26 4
gpt4 key购买 nike

我有个问题。

假设我有两个类,它们具有相同的名称、相同的属性、相同的成员等,但 namespace 不同。下面是一个例子:

Namespace ns1
Public Class MyOwnClass

Public member1 As Integer = 3
Public member2 As String = "noob"

End Class
End Namespace

Namespace ns2
Public Class MyOwnClass

Public member1 As Integer = 0
Public member2 As String = ""

End Class
End Namespace

我想创建一个函数,它将动态地将类从命名空间 1 强制转换为命名空间 2,并且我希望这个函数在每个具有相同成员的类上工作。

这个怎么做 ?

我想要一些我可以这样使用的东西:
Dim class1 as new ns1.MyPersonalClass
Dim class2 as new ns2.MyPersonalClass

'Convert the class1 into class2
Convert(class1, class1.GetType, class2, class2.GetType)

C# 中的等价物是这个
TOutput ConvertEquivalentTypes<TInput, TOutput>(TInput structure)
where TInput : class
where TOutput : class
{
TOutput result = null;

using (Stream data = new MemoryStream())
{
new XmlSerializer(typeof(TInput)).Serialize(data, structure);
data.Seek(0, SeekOrigin.Begin);
result = (TOutput)new XmlSerializer(typeof(TOutput)).Deserialize(data);
}

return result;
}

最佳答案

VB.NET 等效于您当前拥有的 C# 代码将是这样的:

Imports System.IO
Imports System.Xml.Serialization
'...

Private Function ConvertEquivalentTypes(Of TInput As Class,
TOutput As Class)([structure] As TInput) As TOutput
Dim result As TOutput = Nothing

Using data As Stream = New MemoryStream()
Dim oSerializer As New XmlSerializer(GetType(TInput))
oSerializer.Serialize(data, [structure])
data.Seek(0, SeekOrigin.Begin)

Dim oDeserializer As New XmlSerializer(GetType(TOutput))
result = DirectCast(oDeserializer.Deserialize(data), TOutput)
End Using

Return result
End Function

关于xml - 如何将 ns1.MyPersonalClass 转换为 ns2.MyPersonalClass ?他们拥有相同的属性(property)或成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25366448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com