我正在寻找一种方法来过滤掉unsafe
通过反射具有修饰符的方法。它似乎不是方法属性。
有办法吗?
编辑:似乎这个信息不在元数据中,至少我在 IL 中看不到它。但是反射unsafe
器在 C# 视图中显示修饰符。关于它是如何完成的任何想法?
编辑 2:为了我的需要,我最终进行了检查,假设如果方法的参数之一是指针,或者返回类型是指针,那么该方法是不安全的。
public static bool IsUnsafe(this MethodInfo methodInfo)
{
if (HasUnsafeParameters(methodInfo))
{
return true;
}
return methodInfo.ReturnType.IsPointer;
}
private static bool HasUnsafeParameters(MethodBase methodBase)
{
var parameters = methodBase.GetParameters();
bool hasUnsafe = parameters.Any(p => p.ParameterType.IsPointer);
return hasUnsafe;
}
当然,这不能处理在方法中执行不安全块的情况,但同样,我感兴趣的只是方法签名。
谢谢!