C# 获取调用扩展方法的引用的名称
假设我有一个名为MyExtensionMethod的扩展方法 我想这样使用它:C# 获取调用扩展方法的引用的名称,c#,C#,假设我有一个名为MyExtensionMethod的扩展方法 我想这样使用它: var x = new MyClass() x.MyExtensionMethod() 然后,在extension方法中,我想获取调用它的引用的名称: public static void MyExtensionMethod(this object param) { //get the name "x" somehow } 这可能吗?在C#中,这是不可能的。确保可用的信息如下所示: 调用方法的名称 发生调
var x = new MyClass()
x.MyExtensionMethod()
然后,在extension方法中,我想获取调用它的引用的名称:
public static void MyExtensionMethod(this object param)
{
//get the name "x" somehow
}
这可能吗?在C#中,这是不可能的。确保可用的信息如下所示:
如果您只是试图简化参数检查,请在以下文件夹中创建一个文件: %USERPROFILE%\Documents\Visual Studio 2012\Code Snippets\Visual C\My Code Snippets 如果您有多个Visual Studio版本,或者版本与2012不同,则其他版本将存在一个适当命名的备用文件夹 使用以下内容将文件命名为ThrowIfArgumentNull.snippet。要使用它,请在编辑器中键入
tan
,然后按tab键两次。您将获得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>
膨胀
如果参数为null,则抛出
山姆·哈维尔
如果指定的参数为null,则引发ArgumentNullException。
棕褐色的
arg
arg
arg
无参数异常
无参数异常
无参数异常
SimpleTypeName(全局::System.ArgumentNullException)
在C#中,这是不可能的。确保可用的信息如下所示:
如果您只是试图简化参数检查,请在以下文件夹中创建一个文件: %USERPROFILE%\Documents\Visual Studio 2012\Code Snippets\Visual C\My Code Snippets 如果您有多个Visual Studio版本,或者版本与2012不同,则其他版本将存在一个适当命名的备用文件夹 使用以下内容将文件命名为ThrowIfArgumentNull.snippet。要使用它,请在编辑器中键入
tan
,然后按tab键两次。您将获得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>
膨胀
如果参数为null,则抛出
山姆·哈维尔
如果指定的参数为null,则引发ArgumentNullException。
棕褐色的
arg
arg
arg
无参数异常
无参数异常
无参数异常
SimpleTypeName(全局::System.ArgumentNullException)
是否要获取实际变量名?是。那正是我想要的。我不相信你能做到。你需要这样做的情况是什么?在大多数情况下,变量名在编译过程中丢失。如果你解释一下你试图解决的问题,听起来有更好的方法,你想得到实际的变量名吗?是的。那正是我想要的。我不相信你能做到。你需要这样做的情况是什么?在大多数情况下,变量名在编译过程中丢失。如果你解释一下你试图解决的问题,听起来有更好的方法。这是当我说“一切都比预期的好”时。我只是尝试简化参数null检查,相反,我学会了如何为Visual Studio定义自定义代码段。:)这就是我说的“一切都比预期的好”。我只是尝试简化参数null检查,相反,我学会了如何为Visual Studio定义自定义代码段。:)