[Mono-list] Re: some System.XML bugfixes

ginga(A.E.) ginga@kit.hi-ho.ne.jp
Sun, 01 Dec 2002 11:22:14 +0900


Hello.

> This is especially true since XmlDocument and XmlDataDocument are
> in different assemblies.  Unless, maybe the second CreateNavigator
> should be virtual instead of override.  Since CreateNavigator is
> protected internal in XmlDocument, would it be true that XmlDataDocument
> shouldn't even see that definition?

First of all, in relate to the specification, I missed that
XmlDataDocument don't have the declaration of CreateNavigator.

I would tend to agree with you. But 'public' and 'internal protected'
are importantly different when third parties (users) wanted to
call such methods from non-inherited classes.
'public' methods can be called, but 'internal protected' methods can't. 

So I think 'public virtual' is better than 'internal protected.'


BTW, MS document says that XmlNode.CreateNavigator() is 'public':
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxmlxmlnodeclasscreatenavigatortopic.asp
(With VB.NET syntax, it is explicitly declared as 'NotOverridable')

And I couldn't find the ECMA specification's definition for XmlDocument
class. Please tell me where that API specification is...
http://www.ecma.ch/ecma1/STAND/ecma-335.htm
ftp://ftp.ecma.ch/ecma-st/Ecma-335-xml.zip

I can't find why this method is not virtual. If MS developers
didn't have to override it, they might leave it 'public.'
But on the other hand, 'InsertAfter' is overridable, and then
'CreateNavigator' should be 'public virtual' too.
Or if they have rational reason they don't want to override it, then
it should be 'public.'

Anyway, some bugfixes are required.
Thanks.

-- Atsushi Enomoto