Hi, I would recommend you to double check your design, since, may be
there are flaws whichs why you need to convert a base type to
inherited type. However, I would prefer the static way to to do this.

cheers...
tfr



On Sat, Mar 7, 2009 at 11:25 AM, Charles A. Lopez
<[email protected]> wrote:
> i am thinking inheritance and operator overloading over here.
>
>
>
> On Fri, Mar 6, 2009 at 6:09 PM, Joe Enos <[email protected]> wrote:
>>
>> I've got a scenario that I'm hoping to find a shortcut for.  I have a
>> base class and a derived class - the derived class adds additional
>> properties.  For example:
>>
>> public class Foo {
>>        public int Prop1 { get; set; }
>>        public int Prop2 { get; set; }
>> }
>>
>> public class Bar : Foo {
>>        public int Prop3 { get; set; }
>> }
>>
>> Suppose I have a Foo, and want to convert it to a Bar (obviously Prop3
>> would be empty) - I don't care if it's a cast or a convert.  I can
>> think of several ways of doing this:
>>  - create a constructor in Bar that accepts a Foo, then one-by-one
>> assign the values of Prop1 and Prop2 to the new instance's Prop1 and
>> Prop2.
>>  - create a static method ConvertToBar(Foo foo) that does the same
>> thing
>>  - use reflection to retrieve the values of all properties of the Foo
>> and assign to a new Bar.
>>
>> I can't put an explicit or implicit conversion operator in Foo,
>> because Bar derives from Foo, and for some reason (which I'm sure
>> makes a lot of sense to someone) the compiler won't let me do that.
>
>
> The logic would become cyclical and collapse on it's own weight.
>
>
>>
>> Even if I could, I'd still have to assign the properties one at a
>> time.
>>
>> Any ideas?  I'd rather not use reflection, but that seems to be the
>> only way to do this using the smallest amount of code and allowing for
>> new properties to be added to Foo without a code change to Bar - there
>> are a couple dozen properties in Foo, and only one or two extra
>> properties in Bar, so I'm hoping there's some trick out there that
>> would save me from doing this.
>>
>> Thanks
>>
>> Joe
>
>
>

Reply via email to