【C#】反射

核心的类

  1. Activator
  2. Attribute
  3. Assembly
  4. Type
  5. ConstructorInfo
  6. MethodBase
  7. MemberInfo
  8. FieldInfo
  9. PropertyInfo

创建实例

// 无参构造函数
object obj = Activator.CreateInstance(targetType);
// 一个int类型参数的构造函数
object obj = Activator.CreateInstance(targetType, new object[] { 520 });
// 一个字符串类型参数的构造函数
object obj = Activator.CreateInstance(targetType,new object[] { "str"});
// 一个字符串类型和一个int类型参数的构造函数
object obj = Activator.CreateInstance(targetType, new object[] { "str", 520 });
// 调用私有构造函数
object obj = Activator.CreateInstance(targetType, true);

获取Type

var type = typeof(obj);
var type = obj.GetType();
var type = Type.GetType("System.Double");
var type = assembly.GetType("DB.MySql.MySqlHlper");

判断是否为异步方法

public static bool IsAsyncMethod(MethodInfo method)
{
    if(method.ReturnType == typeof(Task)) return true;

    return method.ReturnType.IsGenericType 
        && method.ReturnType.GetGenericTypeDefinition() == typeof(Task<>);
}
posted @ 2022-06-02 12:34  weidadong  阅读(32)  评论(0)    收藏  举报