如何投射對象的實例並將其實際製作爲該類型的對象?泛型和XmlSerializer的繼承性投射問題
我有一個類myClass1,它是myClass2和myClass3的基類。我想使用myClass1進行審計,審計所有我想要的是myClass1中的數據。由於myClass2和myClass3從MyClass1的繼承您可以MyClass1的實例設置爲myClass2例子的一個實例:
myClass2 foo = new myClass2();
foo.prop1 = "some data";
foo.prop2 = "some More Data";
myClass1 bar = foo;
的問題來了,因爲我使用的是通用的
public static IXPathNavigable SerializeGeneric<T>(T serializableObject)
{
String XmlizedString = "Error processing request";
XmlDocument XMLObject = new XmlDocument();
try
{
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(serializableObject.GetType());
傳遞上課的時候我序列化它和XmlSerializer拋出一個錯誤,因爲即使我已經把它轉換爲myClass1,但底層對象仍然是一個myClass2,你可以通過將它轉換爲一個對象然後檢查類型和XmlSerializer得到困惑,因爲我告訴它讓它成爲class1雖然它是自己的反射,它將它視爲一個myClass2
myClass2 foo = new myClass2();
foo.prop1 = "some data";
foo.prop2 = "some More Data";
myClass1 bar = foo;
object obj = bar;
string name = obj.GetType().Name;
name的值是「myClass2」,它有意義地看到內存中的數據實際上是一個myClass2,下面的條只是一個指向myClass2對象的指針。不創建新實例並將該新實例的值設置爲該對象,如
myClass1 bar = new myClass1(){prop1=foo.prop1, prop2=foo.prop2};
我真的不想這樣做。
你能告訴你正在調用SerializeGeneric嗎?另外,您可能想更改標題,因爲我不認爲XMLSterilizer是您想要的。 – SwDevMan81 2009-08-06 16:44:43
是的XMLSterilizer會是完全不同的東西 – 2009-08-06 16:48:57