Is there a better alternative than this to 'switch on type'?

后端 未结 30 2514
梦毁少年i
梦毁少年i 2020-11-22 03:28

Seeing as C# can\'t switch on a Type (which I gather wasn\'t added as a special case because is relationships mean that more than one distinct

30条回答
  •  你的背包
    2020-11-22 04:02

    You can create overloaded methods:

    void Foo(A a) 
    { 
        a.Hop(); 
    }
    
    void Foo(B b) 
    { 
        b.Skip(); 
    }
    
    void Foo(object o) 
    { 
        throw new ArgumentException("Unexpected type: " + o.GetType()); 
    }
    

    And cast the argument to dynamic type in order to bypass static type checking:

    Foo((dynamic)something);
    

提交回复
热议问题