Re: base, derived objects

Peter Osucha <[email protected]> Thu, 3 May 2007 14:04:11 -0400
Newsgroups gmane.comp.windows.devel.dotnet.cx
Message-ID <[email protected]>
Chris,

I don't follow you here...

>> You could code the ctor to take a object of type Base, but how would
you extract the private members >> from it without exposing them to
other classes.

How does this affect other classes.  Perhaps if the base class is
'Internal' - but if the base class is 'Public', then I don't see how it
would affect other classes.

Peter


-----Original Message-----
From: Discussion relating to the specifics of the C# and Managed C++
languages [mailto:[email protected]] On Behalf Of Chris
Anderson
Sent: Thursday, May 03, 2007 12:14 PM
To: [email protected]
Subject: Re: [DOTNET-CX] base, derived objects

No, and it makes sense why not.
 
The derived class may have completely different construction
requirements.
It may (as in my sample case) expand upon the parameters required, it
may reduce the parameters, supplying calculated or default values for
the others, or it may need completely different parameters and use them
to calculate the base ctor params.
 
You could code the ctor to take a object of type Base, but how would you
extract the private members from it without exposing them to other
classes. (You could mark them as internal which would help a little, but
that may still be against the design, or you could use Reflection which
would be slow, require elevated rights, and would prove brittle over
time)
 
Personally in your shoes I would look at writting a macro/addin to emit
the standard method of using ":base(...)" and just fill the params.
For a really basic version, you could get it to simply copy the derived
ctor params leaving he user to modify the list based on what the base
really wanted
That would cover most cases (where the number, type and ordering of the
params was the same)
 
 

________________________________

From: Discussion relating to the specifics of the C# and Managed C++
languages on behalf of Peter Osucha
Sent: Thu 03/05/2007 16:46
To: [email protected]
Subject: Re: [DOTNET-CX] base, derived objects



Chris,

That's what I'm doing now.  I was wondering if there was some sort of
shorthand (shorterhand?) that would allow me to just set the base
object.  It's easy enough to just create another constructor that takes
a 'Base' as its argument...

Peter

-----Original Message-----
From: Discussion relating to the specifics of the C# and Managed C++
languages [mailto:[email protected]] On Behalf Of Chris
Anderson
Sent: Thursday, May 03, 2007 11:28 AM
To: [email protected]
Subject: Re: [DOTNET-CX] base, derived objects

public Derived (<derived param list>) : base(pass appropriate params to
base) {}

eg

public Base (int param1, string param2) {...}

public Derived (int p1, string p2, int p3) : base(p1,p2)
{
   // do something additional with p3
}

===================================
This list is hosted by DevelopMentorĀ®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com