Re: REPOST:Hiding base class property from derived class instance

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance

From: Mike Newton (MNewton_at_discussions.microsoft.com)
Date: 12/14/04


Date: Tue, 14 Dec 2004 14:31:49 -0600

It sounds like you want to use an interface instead of inheritance.

If you have public properties in a base class, you won't be able to mask
them in inherited classes. The reason for this is simple.

We'll say that you have object X, we'll call it a ListBox, but you need
to use it with object Y, which only takes WebControls. If X hid members
of the WebControls class, it would no longer be considered a WebControl,
and wouldn't work with object Y.

An interface of common properties will be easier for you to control.
Let those properties be the external items that the dev's work with, but
keep everything else internal.

Essentially, you can't rename properties in child classes, because then
those classes would no longer be children.

Baski wrote:
> If any properties is renamed in derived class I want to mask that
> propoerty from developer derived class instance(just like Explicit interface
> implementation hide).
>
>
> "Rachel Suddeth" <rachel@bldhound.com> wrote in message
> news:OpRguYh4EHA.4008@TK2MSFTNGP15.phx.gbl...
>
>>Ah, now I understand.
>>
>>When you rename the properties, do you need the originals to be unusable
>>by the user/developer, or do you just want them not to show up in the
>>"properties" window of the designer?
>>
>>-Rachel
>>
>>"Baski" <baski@aldensys.com> wrote in message
>>news:%23nYG21f4EHA.2156@TK2MSFTNGP10.phx.gbl...
>>
>>>Rachel,
>>>
>>>I have base framework , which will be used for multiple clients , each
>>>client will call the properties in different names. Base class will not
>>>be
>>>used by the developer any where. We are using the inheritance to get most
>>>functionality(reusability) from base class and easily adopt the new
>>>client
>>>with simple name customization.
>>>
>>>If the base class properties is not renamed in the derived class , I want
>>>the developer to see as it's defined in base class from derived class
>>>instance variable.
>>>
>>>If you need more explanation, plese feel free to email me.
>>>
>>>Thanks
>>>Baski
>>>
>>>
>>>
>>>"Rachel Suddeth" <rachel@bldhound.com> wrote in message
>>>news:O%23zh0yf4EHA.3368@TK2MSFTNGP10.phx.gbl...
>>>
>>>>Please give a brief example that illustrates what you really want to do.
>>>>In the example you give, there is no reason to hide the base property
>>>>with another, since it is exactly the same as the derived one, and also
>>>>nothing the developer could possibly want to use in the base that is not
>>>>exposed by the derived property.
>>>>
>>>>If you can give us an understanding of what you really want to do, we
>>>>very likely can suggest a solution for your problem.
>>>>
>>>>-Rachel
>>>>
>>>>"Baski" <baski@aldensys.com> wrote in message
>>>>news:eIOA%23pf4EHA.3840@tk2msftngp13.phx.gbl...
>>>>
>>>>>Base class:
>>>>>
>>>>>
>>>>>class AssetBase
>>>>>{
>>>>> string _clli;
>>>>>
>>>>> public string CLLI
>>>>> {
>>>>> get
>>>>> {
>>>>> return _clli;
>>>>> }
>>>>> set
>>>>> {
>>>>> _clli = value
>>>>> }
>>>>> }
>>>>>
>>>>>
>>>>>}
>>>>>
>>>>>
>>>>>In Derived Class I want to give different name to the base class
>>>>>property
>>>>>and internally refer the base class property like below
>>>>>
>>>>>
>>>>>class Asset: BaseAsset
>>>>>{
>>>>> public string Location
>>>>> {
>>>>> get
>>>>> {
>>>>> base.CLLI;
>>>>> }
>>>>> set
>>>>> {
>>>>> base.CLLI = value;
>>>>> }
>>>>> }
>>>>>}
>>>>>
>>>>>
>>>>>
>>>>>Now , when the developer use this dll in their project and create Asset
>>>>>instance I want to hide the AssetBase Property CLLI , all i want to see
>>>>>them
>>>>>is Location. I can do this by making base class properties to protected
>>>>>,
>>>>>but I want some of the property to be exposed to the developer
>>>>>as it's defined in base class. How can I do that ?
>>>>>
>>>>>
>>>>>Thanks
>>>>>baski
>>>>>
>>>>
>>>>
>>>
>>
>
>



Relevant Pages

  • Re: Tired of 100s of stupid Getter/Setter methods
    ... but interface does not hide the other methods of implementing ... telling you that you need to refactor a new common superclass. ... Again, composition instead of inheritance. ... A StringVector cannot take Integer parameters. ...
    (comp.lang.java.programmer)
  • Re: A taxonomy of types
    ... (I do not see why inheritance is required here.) ... without an »object-oriented programming language«, for example, ... in the programming language used. ... indirectly) implements an interface IA whose declaration ...
    (comp.lang.misc)
  • Re: Writing an Operating System in Ada
    ... By changing the language standard, ...    type B is interface and A; ... Whether an inheritance is additive or else idempotent depends on the ... are you forgetting the librarian/library/book metaphor from ...
    (comp.lang.ada)
  • Re: frmN.Label31.Text = frmTitle does not work in VB.net
    ... This subroutine formsize is called by every Form*_Load event in VB6, ... members that do not exist for that type. ... The big difference is that we now have inheritance and interfaces. ... The other way is declare and implement an Interface in all your ...
    (microsoft.public.dotnet.languages.vb)
  • Re: Writing an Operating System in Ada
    ...    type B is interface and A; ... The diamond problem is about components named the ... Add there some other inheritance axis ... are you forgetting the librarian/library/book metaphor from ...
    (comp.lang.ada)