Re: How to pass class as parameter?
- From: "Brett" <no@xxxxxxxx>
- Date: Wed, 13 Apr 2005 12:06:03 -0400
"Larry Lard" <larrylard@xxxxxxxxxxx> wrote in message
news:1113407173.231972.289250@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
>
> Brett wrote:
>> I have several classes that create arrays of data and have certain
>> properties. Call them A thru D classes, which means there are four.
> I can
>> call certain methods in each class and get back an array of data.
> All four
>> classes are the same except for the number of elements in their
> arrays and
>> the data.
>>
>> I have a MainClass (the form), which processes all of these arrays.
> The
>> MainClass makes use of third party objects to do this. There are
> three
>> methods in the MainClass. Currently, I pass a parameter to these
> three
>> methods such as "A as string". This means to process class A. I
> have case
>> statements that take this parameter in the MainClass methods to know
> know
>> which class needs processing. There is much redundant code here
> since the
>> same processing is done for each class. It would be nice if I could
> just
>> pass in the class name as a parameter and run the code. Problem is I
> have
>> four classes instead of one and can't just pass them in as type
> class.
>>
>> Should I place these four classes in a module? How else can I get
> around
>> using the case statements in the MainClass?
>
> If you mean that A B C D all implement the 'same' methods, define an
> interface IMyMethods containing these methods, and have A B C D all
> Implement IMyMethods. Then where you currently pass "A" As String,
> instead pass MyABCD As IMyMethods, and polymorphically invoke the
> methods.
I think this approach will work nicely. The method interfaces for the four
classes are the same. Any functions returning something are all the same
type. The only differences are inside of the methods, which is completely
encapsulated. Given this, can I still use the above technique?
>
> If you mean that A B C D don't all implement the 'same' methods, and
> you're just looking for a more elegant syntax than passing "A" and
> deducing you have an A, instead just pass o As Object, then find out
> what you have been passed with lines like
>
> If TypeOf o Is A Then
> Dim MyA As A = DirectCast(o, A)
> ' do the A stuff with MyA
> ElseIf TypeOf o Is B Then
> Dim MyB As B = DirectCast(o, B)
> ' do the B stuff with MyB
> ...
>
> --
> Larry Lard
> Replies to group please
>
.
- Follow-Ups:
- Re: How to pass class as parameter?
- From: Larry Lard
- Re: How to pass class as parameter?
- References:
- How to pass class as parameter?
- From: Brett
- Re: How to pass class as parameter?
- From: Larry Lard
- How to pass class as parameter?
- Prev by Date: Retrieving Child Rows
- Next by Date: Re: self executable
- Previous by thread: Re: How to pass class as parameter?
- Next by thread: Re: How to pass class as parameter?
- Index(es):
Relevant Pages
|