Overriding private interface property?

J

Joel

Why does this work:

using System;

namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
DerivedClass d=new DerivedClass();

d.MyProp=10;
Console.WriteLine(d.MyProp.ToString());
}
}

public class DerivedClass : BaseClass, IAbClass
{
#region IAbClass Members

public override int MyProp
{
get{return base.MyProp;}
set{base.MyProp=value;}
}

#endregion
}

public class BaseClass : AbClass
{
}

public abstract class AbClass : IAbClass
{
private int _nAb;
#region IAbClass Members

public virtual int MyProp
{
get{return _nAb;}
set{_nAb=value;}
}

#endregion
}

public interface IAbClass
{
int MyProp{get;set;}
}
}


But not this:
using System;

namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
DerivedClass d=new DerivedClass();

d.MyProp=10;
Console.WriteLine(d.MyProp.ToString());
}
}

public class DerivedClass : BaseClass, IAbClass
{
#region IAbClass Members

public override int IAbClass.MyProp
{
get{return base.MyProp;}
set{base.MyProp=value;}
}

#endregion
}

public class BaseClass : AbClass
{
}

public abstract class AbClass : IAbClass
{
private int _nAb;
#region IAbClass Members

public virtual int IAbClass.MyProp
{
get{return _nAb;}
set{_nAb=value;}
}

#endregion
}

public interface IAbClass
{
int MyProp{get;set;}
}
}

TIA
</joel>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top