How to tell if an instance is of a certain Type or any derived types

前端 未结 3 913
陌清茗
陌清茗 2021-01-17 10:06

I\'m trying to write a validation to check that an Object instance can be cast to a variable Type. I have a Type instance for the type of object they need to provide. But th

3条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2021-01-17 11:08

    If you are working with Instances, you should be going for Type.IsInstanceOfType

    (Returns) true if the current Type is in the inheritance hierarchy of the object represented by o, or if the current Type is an interface that o supports. false if neither of these conditions is the case, or if o is nullNothingnullptra null reference (Nothing in Visual Basic), or if the current Type is an open generic type (that is, ContainsGenericParameters returns true). -- MSDN

            Base b = new Base();
            Derived d = new Derived();
            if (typeof(Base).IsInstanceOfType(b)) 
                Console.WriteLine("b can come in.");    // will be printed
            if (typeof(Base).IsInstanceOfType(d)) 
                Console.WriteLine("d can come in.");    // will be printed
    

    If you are working with Type objects, then you should look at Type.IsAssignableFrom

    (Returns) true if c and the current Type represent the same type, or if the current Type is in the inheritance hierarchy of c, or if the current Type is an interface that c implements, or if c is a generic type parameter and the current Type represents one of the constraints of c. false if none of these conditions are true, or if c is nullNothingnullptra null reference (Nothing in Visual Basic). -- MSDN

提交回复
热议问题