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

你问我为什么要这么做。
我正在编写一个可以在任何地方调用的审计组件。它采用了审核上下文以及CallerMemberName参数所需的一些参数。
但是在我的某些父类(super class)中,我已经具有与审核有关的某些信息,因此我在那儿编写了一个仅采用CallerMemberName参数的方法。然后,它调用我的审核组件,传递其在上下文中已经具有的参数以及已经隐式捕获的调用者成员名称。

最佳答案

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

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");

关于c# - 您是否可以通过显式传递值来覆盖由CallerMemberName赋予的参数的自动捕获值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19721423/

10-13 08:12