如何使用XmlWriter.Create(...?)实例化抽象类XmlWriter?

gb2*_*b2d 12 .net c#

只是想澄清一下我对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)

经过测试,这显然有效.任何人都可以帮助我了解这里发生了什么.据我所知,这里有或者应该没有"实例"吗?

pol*_*nts 9

您不能使用创建实例new,但Create这里使用的是所谓的静态工厂方法; 它不是构造函数.你会发现,事实上,返回的对象Create不属于abstract class XmlWriter,而是一些其他具体的子类.

也可以看看