我想请教如何通过接口实例使用XMLSerialization生成一个xml文件.具体如下:
public interface IMyTest
{
int age{get;}
IList<IOther> Bob {get;} //IOther 也是一个接口
}class A : IMyTest
{}
... //若干个类实现接口
...
Class F : IMyTest
{}void mymain(IMyTest instance)
{
//这里我得到IMyTest 的接口实例
如何使用XMLSerialization序列化
}
public interface IMyTest
{
int age{get;}
IList<IOther> Bob {get;} //IOther 也是一个接口
}class A : IMyTest
{}
... //若干个类实现接口
...
Class F : IMyTest
{}void mymain(IMyTest instance)
{
//这里我得到IMyTest 的接口实例
如何使用XMLSerialization序列化
}
哪怕你定义为object都可以,但是任何变量类型为接口的都不能序列化,虽然很囧,但是事实就是这样。
你可以把接口换成抽象类,或者实现IXmlSerializable接口,或者改成IList Bob {get;},或者在Bob属性上加上XmlIgnore标记,另外写个IList BobForSerialize {get ;}……
不管哪种办法都很ugly,你自己决定吧。ps:只读的属性可以被序列化吗?有点疑问。
public interface IMyTest
{
int age{get;}
} 可以序列化吗
你不可能单单序列化一个接口,这个很容易理解吧?因为接口不是对象的实际类型,只是定义的规范。
继承了IMyTest的实体类A、F可以被序列化,但是如果哪个类的某个属性类型定义为IMyTest,这个类是无法被序列化的,这个是规定。
如果屏蔽IList <IOther> Bob {get;} 如下
public interface IMyTest
{
int age{get;}
} 可以序列化吗
你不可能单单序列化一个接口,这个很容易理解吧?因为接口不是对象的实际类型,只是定义的规范。
继承了IMyTest的实体类A、F可以被序列化,但是如果哪个类的某个属性类型定义为IMyTest,这个类是无法被序列化的,这个是规定。 我的意思是我获得了 IMyTest的实例,我如何 序列化实现这个接口的类.
因为得到找个IMyTest的时候不知道到底是那个类实例化了它
如果屏蔽IList <IOther> Bob {get;} 如下
public interface IMyTest
{
int age{get;}
} 可以序列化吗
你不可能单单序列化一个接口,这个很容易理解吧?因为接口不是对象的实际类型,只是定义的规范。
继承了IMyTest的实体类A、F可以被序列化,但是如果哪个类的某个属性类型定义为IMyTest,这个类是无法被序列化的,这个是规定。 我的意思是我获得了 IMyTest的实例,我如何 序列化实现这个接口的类.
因为得到找个IMyTest的时候不知道到底是那个类实例化了它
你可以通过GetType方法得到对象的类型,有没有实现IMyTest接口其实并没有关系。