25

我有一种情况,在某些上下文中,我想将一个显式值传递给我的方法,并使用一个用 CallerMemberName 标记的参数,而我希望它从其他上下文中自动捕获。我想知道这是否可能,还是该属性总是优先?

你问我为什么要这么做。我正在编写一个可以从任何地方调用的审计组件。它接受审计上下文所需的一些参数,以及 CallerMemberName 参数。但是在我的一些超类中,我已经有了一些与审计相关的信息,所以我在那里编写了一个只接受 CallerMemberName 参数的方法。然后它调用我的审计组件,传递它已经在它的上下文中拥有的参数以及它已经隐式捕获的调用者成员名称。

4

1 回答 1

36

是的,这是可能的,因此它可以隐式和显式使用。

private void CaptureCaller(
     [CallerMemberName] string callerMemberName = "")
{
    // callerMemberName will contain the name of the method that called CaptureCaller if called with no parameters.
    // callerMemberName will contain the value of the passed in parameter if provided.
}

CaptureCaller();
CaptureCaller("custom value");
于 2013-11-01T05:41:06.830 回答