How do I find the actual types of the elements in a list of classes?

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Aug 13 17:06:03 PDT 2015


On 08/13/2015 04:48 PM, Jack Stouffer wrote:
> On Thursday, 13 August 2015 at 22:49:15 UTC, Adam D. Ruppe wrote:
>> On Thursday, 13 August 2015 at 21:42:54 UTC, Jack Stouffer wrote:
>>> dynamically calling different methods on each object in the list
>>> based on its type.
>>
>> The cleanest OO way of doing that is to put the methods you need in
>> the interface and always call it through that. Then there's no need to
>> cast and each child class can implement it their own way.
>
> This really doesn't make sense in the context that I am using this code
> in. The above code is a very reduced test case. In my code, the list can
> have 20-30 different types of classes in it all inheriting from the same
> interface, and it doesn't make sense for all of those classes to
> implement a method that is very specific to one of the classes.

Enter the visitor pattern (or its variant 'acyclic visitor pattern'). 
Although, with 20-30 classes, it will be nasty to use.. :( So, 
downcasting like suggested seems to be the best option here.

Ali



More information about the Digitalmars-d-learn mailing list