Using Case/Switch and GetType to determine the object

Spread the love

Question Description

Possible Duplicate:
C# – Is there a better alternative than this to ‘switch on type’?

If you want to switch on a type of object, what is the best way to do this?

Code snippet

private int GetNodeType(NodeDTO node)
    switch (node.GetType())
        case typeof(CasusNodeDTO):
            return 1;
        case typeof(BucketNodeDTO):
            return 3;
        case typeof(BranchNodeDTO):
            return 0;
        case typeof(LeafNodeDTO):
            return 2;
            return -1;

I know this doesn’t work that way, but I was wondering how you could solve this.
Is an if/else statement appropriate in this case?

Or do you use the switch and add .ToString() to the type?

Practice As Follows

If I really had to switch on type of object, I’d use .ToString(). However, I would avoid it at all costs: IDictionary will do much better, visitor might be an overkill but otherwise it is still a perfectly fine solution.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.