Re: How to pass class as parameter?

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance




"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
>


.



Relevant Pages

  • Re: How to pass class as parameter?
    ... > I have several classes that create arrays of data and have certain ... > I have a MainClass, which processes all of these arrays. ... Implement IMyMethods. ... Dim MyB As B = DirectCast ...
    (microsoft.public.dotnet.languages.vb)
  • Re: How to pass class as parameter?
    ... >> Brett wrote: ... >>> I have several classes that create arrays of data and have certain ... >>> MainClass makes use of third party objects to do this. ... across all the classes that will be implementing the interface. ...
    (microsoft.public.dotnet.languages.vb)
  • How to pass class as parameter?
    ... I have several classes that create arrays of data and have certain ... I have a MainClass, which processes all of these arrays. ... which class needs processing. ... There is much redundant code here since the ...
    (microsoft.public.dotnet.languages.vb)