Search code examples
c#objecttypescastingtypeof

How to cast Object to its actual type?


If I have:

void MyMethod(Object obj) {   ...   }

How can I cast obj to what its actual type is?


Solution

  • If you know the actual type, then just:

    SomeType typed = (SomeType)obj;
    typed.MyFunction();
    

    If you don't know the actual type, then: not really, no. You would have to instead use one of:

    • reflection
    • implementing a well-known interface
    • dynamic

    For example:

    // reflection
    obj.GetType().GetMethod("MyFunction").Invoke(obj, null);
    
    // interface
    IFoo foo = (IFoo)obj; // where SomeType : IFoo and IFoo declares MyFunction
    foo.MyFunction();
    
    // dynamic
    dynamic d = obj;
    d.MyFunction();