我正在寻找一种通过反射过滤掉带有
有什么办法吗?
编辑:似乎这个信息不在元数据中,至少我在IL中看不到它。但是反编译器在C#视图中显示了
编辑2:根据我的需求,我最终采用了一个检查,假定如果方法的参数之一是指针,或者返回类型是指针,则该方法是不安全的。
这当然无法处理一个不安全的块在方法内执行的情况,但是我只关心方法签名。谢谢!
unsafe
修饰符的方法的方法。似乎这不是一种方法属性。有什么办法吗?
编辑:似乎这个信息不在元数据中,至少我在IL中看不到它。但是反编译器在C#视图中显示了
unsafe
修饰符。有任何关于如何完成此操作的想法吗?编辑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;
}
这当然无法处理一个不安全的块在方法内执行的情况,但是我只关心方法签名。谢谢!
unsafe
关键字,因此我想忽略具有unsafe
方法的类型。 - Igal Tabachnik