Ste*_*cya 49
试试这个
Assembly.GetCallingAssembly();
Run Code Online (Sandbox Code Playgroud)
这个怎么样:
StackTrace stackTrace = new StackTrace(); // get call stack
StackFrame[] stackFrames = stackTrace.GetFrames(); // get method calls (frames)
var assembly = stackFrames[1].GetMethod().DeclaringType.Assembly;
Run Code Online (Sandbox Code Playgroud)
在http://www.csharp-examples.net/reflection-callstack/的帮助下
这是我使用的:
var stackFrames = new StackTrace().GetFrames();
if(stackFrames==null) return null;
var executingAssembly = Assembly.GetExecutingAssembly();
foreach (var frame in stackFrames)
{
var assembly = frame.GetMethod().DeclaringType.Assembly;
if (assembly != executingAssembly)
{
return assembly;
}
}
return null;
Run Code Online (Sandbox Code Playgroud)
不,不可能可靠地了解谁在给您打电话。毫无疑问,有些人会建议进行堆栈遍历,但是由于JIT内联,这是不可靠的。根本没有办法可靠地获取正在调用您的方法的方法/程序集。
| 归档时间: |
|
| 查看次数: |
18044 次 |
| 最近记录: |