Type.IsAssignableFrom(Type)方法用于确定是否可以将指定类型的实例分配给当前类型的变量。
Syntax: public virtual bool IsAssignableFrom (Type c);
Here, it takes the type to compare with the current type.
Return Value: This method returns true if any of the following conditions is true:
- c and the current instance represent the same type.
- c is derived either directly or indirectly from the current instance. c is derived directly from the current instance if it inherits from the current instance; c is derived indirectly from the current instance if it inherits from a succession of one or more classes that inherit from the current instance.
- The current instance is an interface that c implements.
- c is a generic type parameter, and the current instance represents one of the constraints of c.
下面的程序说明了Type.IsAssignableFrom()方法的用法:
范例1:
// C# program to demonstrate the
// Type.IsAssignableFrom() Method
using System;
using System.Globalization;
using System.Reflection;
using System.IO;
// Defining MyClass extended
// from TypeDelegator
public class MyClass : TypeDelegator { }
class GFG {
// Main Method
public static void Main()
{
// Declaring and initializing object of Type
Type objType = typeof(TypeDelegator);
// Getting array of Properties by
// using GetProperties() Method
bool status = objType.IsAssignableFrom(typeof(MyClass));
// Display the Result
if (status)
Console.WriteLine("Instance of a specified type can be "
+ "assigned to a variable of the current type.");
else
Console.WriteLine("Instance of a specified type can't be "
+ "assigned to a variable of the current type.");
}
}
输出:
Instance of a specified type can be assigned to a variable of the current type.
范例2:
// C# program to demonstrate the
// Type.IsAssignableFrom() Method
using System;
using System.Globalization;
using System.Reflection;
using System.IO;
class GFG {
// Main Method
public static void Main()
{
// Declaring and initializing object of Type
Type objType = typeof(double);
// Getting array of Properties by
// using GetProperties() Method
bool status = objType.IsAssignableFrom(typeof(int));
// Display the Result
if (status)
Console.WriteLine("Instance of a specified type can be "
+ "assigned to a variable of the current type.");
else
Console.WriteLine("Instance of a specified type can't be "
+ "assigned to a variable of the current type.");
}
}
输出:
Instance of a specified type can't be assigned to a variable of the current type.
参考:
- https://docs.microsoft.com/zh-cn/dotnet/api/system.type.isassignablefrom?view=netframework-4.8