MyExtensionMethod라는 확장 메서드가 있다고 가정 해 보겠습니다.
다음과 같이 사용하고 싶습니다.
var x = new MyClass()
x.MyExtensionMethod()
그런 다음 확장 메서드 내에서 호출 된 참조의 이름을 가져오고 싶습니다.
public static void MyExtensionMethod(this object param)
{
//get the name "x" somehow
}
이것이 가능한가?
C #에서는 불가능합니다. 사용 가능한 정보는 다음과 같습니다.
원본 : 호출자 정보 (C # 및 Visual Basic)
인수 검사를 단순화하려는 경우 다음 폴더에 파일을 만듭니다.
% USERPROFILE % \ Documents \ Visual Studio 2012 \ Code Snippets \ Visual C # \ My Code Snippets
Visual Studio의 여러 버전이 있거나 2012와 다른 버전이있는 경우 다른 버전에 대해 적절하게 이름이 지정된 대체 폴더가 존재합니다.
다음 내용으로 파일 이름을 ThrowIfArgumentNull.snippet으로 지정합니다 . 그것을 사용하려면 tan
편집기에 입력 하고 탭을 두 번 누릅니다. 인수 이름 입력에 대한 IntelliSense 지원이 제공되고 문자열 인수가 자동으로 채워집니다. 이 스 니펫은 표준을 생성 ArgumentNullException
하지만 프로젝트에서 사용하는 경우 Guard
또는 Argument
클래스 를 사용하도록 수정할 수 있습니다 .
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
<Title>Throw if argument null</Title>
<Author>Sam Harwell</Author>
<Description>Throw an ArgumentNullException if the specified argument is null.</Description>
<HelpUrl>
</HelpUrl>
<Shortcut>tan</Shortcut>
</Header>
<Snippet>
<Declarations>
<Literal Editable="true">
<ID>arg</ID>
<ToolTip>arg</ToolTip>
<Default>arg</Default>
<Function>
</Function>
</Literal>
<Literal Editable="false">
<ID>ArgumentNullException</ID>
<ToolTip>ArgumentNullException</ToolTip>
<Default>ArgumentNullException</Default>
<Function>SimpleTypeName(global::System.ArgumentNullException)</Function>
</Literal>
</Declarations>
<Code Language="csharp"><![CDATA[if ($arg$ == null)
throw new $ArgumentNullException$("$arg$");$end$]]></Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다