Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取调用扩展方法的引用的名称_C# - Fatal编程技术网

C# 获取调用扩展方法的引用的名称

C# 获取调用扩展方法的引用的名称,c#,C#,假设我有一个名为MyExtensionMethod的扩展方法 我想这样使用它: var x = new MyClass() x.MyExtensionMethod() 然后,在extension方法中,我想获取调用它的引用的名称: public static void MyExtensionMethod(this object param) { //get the name "x" somehow } 这可能吗?在C#中,这是不可能的。确保可用的信息如下所示: 调用方法的名称 发生调

假设我有一个名为MyExtensionMethod的扩展方法

我想这样使用它:

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定义自定义代码段。:)