[Mono-list] A question about interfaces
Rodolfo Campero
rodolfocampero@hotmail.com
Sat, 07 Feb 2004 02:44:48 +0000
Hello all,
I have a question about interfaces. I tried to compile the following
program:
<listing>
namespace InterfaceTests {
interface ITop {
int Count { get; }
}
interface ILeft: ITop {}
interface IRight: ITop {}
interface IBottom: ILeft, IRight {}
class Test {
public static void Main () {}
public void Testing (IBottom test) {
int a = test.Count;
}
}
}
</listing>
but I got a CS0122 error:
interfaces.cs(16) error CS0122: `InterfaceTests.IBottom.Count' is
inaccessible due to its protection level
Compilation failed: 1 error(s), 0 warnings
I wonder why IBottom.Count is inaccessible, given the fact that neither
ILeft nor IRight hide this property.
I've read the documentation, and in ECMA-334 C# Language Specification,
section 20.1.2: Base interfaces, there is a similar example involving
IControl, ITextBox, IListBox and IComboBox, and the example states:
"the IComboBox interface above inherits members SetText and SetItems as well
as Paint." In the example, Paint is defined in the basic interface
(IControl).
And then in 20.2, "The members of an interface are the members inherited
from the base interfaces and the members declared by the interface itself."
>From 20.4.2: "When a class implements multiple interfaces that have the same
base interface, there can be only one implementation of the base interface."
Apparently the property Count in my example shouldn't be hidden in the
interface IBottom, yet I'm getting an error. Is this a bug in mcs or am I
missing something?
TIA,
Rodolfo Campero
PS: BTW, is this the right list to ask this kind of questions, or would
mono-devel-list be more appropriate?
_________________________________________________________________
The new MSN 8: advanced junk mail protection and 2 months FREE*
http://join.msn.com/?page=features/junkmail