只是想澄清一下我对XmlWriter和抽象类的工作原理的理解.
我的想法是,虽然它可以包含可以由继承类使用的基本方法,但是不能实例化抽象类.
因此,在调查XmlWriter时,我发现要实例化XmlWriter,可以调用XmlWriter.Create(....,它返回一个...... XmlWriter的实例,然后可以使用它:
FileStream fs = new FileStream("XML.xml", FileMode.Create);
XmlWriter w = XmlWriter.Create(fs);
XmlSerializer xmlSlr = new XmlSerializer(typeof(TestClass));
xmlSlr.Serialize(fs, tsIn);
Run Code Online (Sandbox Code Playgroud)
经过测试,这显然有效.任何人都可以帮助我了解这里发生了什么.据我所知,这里有或者应该没有"实例"吗?
您不能使用创建实例new
,但Create
这里使用的是所谓的静态工厂方法; 它不是构造函数.你会发现,事实上,返回的对象Create
不属于abstract class XmlWriter
,而是一些其他具体的子类.