Thank you. However, that does not help with the idea that a base class implements an interface and then I re-implement the interface on derived classes where needed. This is so that ever class that inherits from the base class also implements the interface, even if I do not re-implement it for the derived class. But some derived classes will add their own functionality.
Thanks, Mike On 7/7/06, gregory young <[EMAIL PROTECTED]> wrote:
You have to do whats called "explicitly implementing" a interface. See http://msdn2.microsoft.com/en-us/library/4taxa8t2.aspx Cheers, Greg On 7/7/06, Mike Andrews <[EMAIL PROTECTED]> wrote: > > Guys, > > I have a question that I need some help with in regards to implementing an > interface. > I've been a VB programmer for most of my career and now I use C#. Some of > the functionality that I used in VB seems to be lacking in C#. > I wanted to know if it's my imagination or if there's a workaround. > > The base problem is that I want to change the access level on interface > methods once they are implemented in a class. However, C# seems to cry > and > such changes and VB seems to allow them. Here's the example: > > Here's the VB example: > > Public Interface IBusiness > > Sub Remove() > Sub Save() > Property ID() As Guid > > End Interface > > Public MustInherit Class T > Implements IBusiness > > Public MustOverride Sub DoStuff() > > Protected Friend Overridable Property ID() As System.Guid Implements > IBusiness.ID > Get > > End Get > Set(ByVal value As System.Guid) > > End Set > End Property > > Protected Friend Overridable Sub Remove() Implements IBusiness.Remove > > End Sub > > Protected Friend Overridable Sub Save() Implements IBusiness.Save > > End Sub > > End Class > > Notice in this example that these methods are the implementation for > IBusiness, but I changed the access modifiers to Protected Friend instead > of > public or something else. > > Now, in C#, if I try to do the same, I get a compiler error: > > public interface IBusiness { > > void Remove(); > void Save(); > Guid ID { get; set;} > > } > > public abstract class T: IBusiness { > > > #region IBusiness Members > > public void Remove() { > throw new Exception("The method or operation is not > implemented."); > } > > public void Save() { > throw new Exception("The method or operation is not > implemented."); > } > > public Guid ID { > get { > throw new Exception("The method or operation is not > implemented."); > } > set { > throw new Exception("The method or operation is not > implemented."); > } > } > > #endregion > > } > > If I change the public members to protected or private I get an error. If > I > change them to explicit implementation, then I cannot access them > regardless > unless I cast to the interface. > > What I'm want to do is implement an interface in a base class (so that I > don't have to implement it in every derived class) and then "re-implement" > for the derived class where necessary but have a protected internal access > modifier. > > Any suggestions or am I barking up the wrong tree here? > > Thanks, > Mike > > =================================== > This list is hosted by DevelopMentor(r) http://www.develop.com > > View archives and manage your subscription(s) at > http://discuss.develop.com > -- If knowledge can create problems, it is not through ignorance that we can solve them. Isaac Asimov =================================== This list is hosted by DevelopMentor(r) http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com
=================================== This list is hosted by DevelopMentorĀ® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com
