Можете ли вы переопределить автоматически зафиксированное значение параметра, связанного с CallerMemberName, явно передав значение?
У меня есть ситуация, когда в каком-то контексте я хочу передать явное значение моему методу с параметром, отмеченным именем CallerMemberName, и из других контекстов, которые я хочу, чтобы он автоматически захватывал.
Я хочу знать, возможно ли это, или будет ли атрибут всегда иметь приоритет?
Почему я хочу это сделать, спросите вы.
Я пишу аудиторский компонент, который можно вызывать из любого места. Требуются некоторые параметры, необходимые для контекста аудита, а также параметр CallerMemberName.
Но на некоторых моих суперклассах у меня уже есть определенные биты информации, относящиеся к аудиту, поэтому я написал там метод, который принимает только параметр CallerMemberName. Затем он обращается к моему компоненту аудита, передавая параметры, которые у него уже есть в этом контексте, а также имя члена вызывающего абонента, которое оно уже неявно зафиксировано.
Ответы
Ответ 1
Да, это возможно, поэтому его можно использовать как неявно, так и явно.
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");