- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在为这个问题绞尽脑汁,但我找不到答案。
我知道 MethodBase.GetCurrentMethod
但我很好奇是否有等效项来获取当前正在执行的 Delegate
(如果有一个正在执行,那就是)。
这有可能吗? (编辑:这似乎最终无法通过核心 .NET 实现,所以我想知道是否有第 3 方库可以执行此操作。)
作为引用,我想执行以下操作:
void Main()
{
var target = new Inner();
var reference = new Action( target.HelloWorld ); // Creates a System.Delegate reference.
reference();
}
class Inner
{
public void HelloWorld()
{
var method = MethodBase.GetCurrentMethod(); // Current method.
var current = DelegateContext.GetCurrentDelegate(); // <==== Magic happens here. Gets "reference" from above.
}
}
为什么?至于我为什么要这样做:对于每个引用,我都想关联一些特定于该委托(delegate)的数据(有点像不是显式传入变量的环境数据)。当委托(delegate)执行时,我随后检索该数据(通过 ConditionalWeakTable
或等效查找)并在委托(delegate)中使用它。
最佳答案
您要求的内容在执行时实际上没有意义。委托(delegate)只是指向某物的指针,因此您可以稍后执行它。
您不可能获得上面使用的相同 引用 - 那只是一个您无法访问的局部变量。您可以做的最好的事情(实际上是同一件事)是获取当前对象实例并使用 Delegate.CreateDelegate 创建一个新的 Action
.
关于c# - 是否可以通过 3rd 方库获取当前正在执行的委托(delegate)(不是 MethodBase/MethodInfo)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37798718/
我想将派生类中声明的属性的一些支持字段存储在基类中包含的 protected 哈希表中。这种机制在派生类中的使用必须尽可能简单。 那么,我能否使用 MethodBase.GetCurrentMetho
只是一个简单的观察。 property MethodBase.IsConstructor不适用于static构造函数,并且文档没有提及这一事实(引用:“true如果此方法是由ConstructorIn
只是一个简单的观察。 property MethodBase.IsConstructor不适用于 static 构造函数,并且文档没有提及这个事实(引用:“true 如果此方法是由 Construct
我的源代码中几乎每个函数都有以下代码。 string methodName = MethodBase.GetCurrentMethod().Name; 我的问题是 考虑到反射是一件代价高昂的事情,是否
我正在从 C++ 过渡到 C#,我有一个方法调用让我感到困惑。我想我也许能猜出它的作用,但如果专家能直接告诉我,我将不胜感激: WDResult returnValue = (WDResult)Inv
我正在使用带有 Lucene 引擎的后端 (.Net C#) 创建一个日志系统,并且我正在记录每个方法请求。 为此,我在后端创建了一个服务引用,WebService 方法参数之一是 Reflectio
我正在尝试使用此 post 中的类但它需要一个 MethodBase 才能运行。 我读了What is the fastest way to get a MethodBase object?但我找不到
我编写了一个日志类和一个函数,如下代码所示: Log(System.Reflection.MethodBase methodBase, string message) 每次我记录一些东西时,我也会记录
是否有等效于 MethodBase.GetCurrentMethod 的可移植类库? 我是 PCL 的新手。我只是在研究是否可以使用 PCL 来保存一些肯定会在 Silverlight 上使用并且可能
我有两个函数的 MethodBases: public static int Add(params int[] parameters) { /* ... */ } public static int
我想捕获在使用 invoke 方法调用的方法中抛出的异常。 public void TestMethod() { try { method.Invoke(comman
首先,很抱歉,如果之前有人问过这个问题。我进行了相当全面的搜索,没有发现任何类似的东西,但我可能遗漏了一些东西。 现在回答问题:我试图通过反射调用构造函数,但没有成功。基本上,我有一个要克隆的对象,因
有什么区别以及对代码的影响? 关于性能和限制,什么更适合? 新属性: - [调用文件路径属性] - [CallerMemberName] - [来电号码] 现在它们在 .NET 4 中也可用(它很容易
我正在将开源库从常规 .NET 4 Client Profile 移植到 DNX Core 5.0。有相当多的库更改,属性或方法被移动或完全删除。我看过this answer但它在我的情况下不起作用,
我正在将一个开源库从常规 .NET 4 客户端配置文件移植到 DNX Core 5.0。有相当多的库更改,属性或方法被移动或完全删除。我看过this answer但它在我的情况下不起作用,因为该方法已
我一直在为这个问题绞尽脑汁,但我找不到答案。 我知道 MethodBase.GetCurrentMethod 但我很好奇是否有等效项来获取当前正在执行的 Delegate(如果有一个正在执行,那就是)
我看到在 .NET 中实现登录时使用 StackFrame 和 MethodBase 的两个独立代码。 我知道 MethodBase 类提供有关方法和构造函数及其来源的信息。 StackFrame 表
如何从 MethodBase 中找出方法的返回类型?我正在使用 PostSharp 并尝试覆盖 CompileTimeValidate(MethodBase 方法)方法以确保该属性应用于具有正确签名的
我正在为try/catch语句创建一个简单的日志记录方法(没什么花哨的)。我要包括类名称和引发异常的方法。 有两种获取信息的方法。一种使用MethodBase.GetCurrentMethod()和异
我试图在运行时调用一个通用接口(interface)方法,但是在查找类型信息时它似乎找到了 IDomainEventSubscriber 而不是传递的正确类型。 抛出运行时错误:对象与目标类型不匹配。
我是一名优秀的程序员,十分优秀!