Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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#ArgumentOutOfRangeException参数intellisense_C#_Parameters_Resharper_Intellisense_Outofrangeexception - Fatal编程技术网

C#ArgumentOutOfRangeException参数intellisense

C#ArgumentOutOfRangeException参数intellisense,c#,parameters,resharper,intellisense,outofrangeexception,C#,Parameters,Resharper,Intellisense,Outofrangeexception,当我写作时: throw new ArgumentOutOfRangeException("") 将插入符号放在引号之间,然后按Ctrl+Space打开intellisense实际上可以做一些事情 让我眼花缭乱的奇怪而美丽的事情是,它实际上暗示了方法中的参数名称: 有人能给我解释一下这是如何实现的吗 如何在这样的级别添加自定义intellisense 更新: 正如一些人指出的,这种智能感知通常不会弹出 我正在使用,我可以控制intellisense是否会以字符串文本形式在ReSharper>

当我写作时:

throw new ArgumentOutOfRangeException("")
将插入符号放在引号之间,然后按Ctrl+Space打开intellisense实际上可以做一些事情

让我眼花缭乱的奇怪而美丽的事情是,它实际上暗示了方法中的参数名称:

有人能给我解释一下这是如何实现的吗

如何在这样的级别添加自定义intellisense

更新: 正如一些人指出的,这种智能感知通常不会弹出

我正在使用,我可以控制intellisense是否会以字符串文本形式在ReSharper>Options>intellisense>Autopopup>[C#]中弹出


尽管如此,我还是想知道我自己如何创建这样的智能感知。

很明显,我看到的是您刚刚在决定抛出它的条件中使用的变量。

我看不到关于Reflector中ArgumentOutOfRangeException或ArgumentException类型的任何特殊之处,所以我猜这是硬编码到VisualStudio中的东西。猜测一下,我会使用一个名为String paramName的异常参数、从ArgumentException继承的异常参数或某种组合

编辑:

在VS2010SP1中,我也没有得到这个intellisense提示。我会查看您的扩展,也许还会查找关于它们的文档。如果它们是开源的,您可能会发现它是如何实现的。

似乎与

怎么做
1.
2.

3.我想你应该看看。 另外还有一个和你的很相似的,可能也会给你一些提示


我不知道如何具体实现,但我认为您甚至不需要使用反射,因为即使是VisualStudio的“正常”IntelliSense也可以工作,而无需首先构建项目。例如,只需向项目中添加一个新类,IntelliSense就可以使用它。我认为ReSharper背后使用了相同的机制。

ReSharper添加了许多有用的功能,这些功能远远超出了Visual Studio通过Intellisense本机提供给您的功能。例如,在ASP.NET MVC中,Resharper将自动建议控制器操作名称:

// Resharper will give suggestions based on controller action names
@Html.Action("Show
在您的问题中,Resharper已将
ArgumentOutOfRangeException
构造函数的参数标记为需要作为当前方法参数的名称。因此,当您输入字符串时,它会提示当前方法参数的名称

像这样写你自己的智能感知需要很多努力。你基本上是在复制Jetbrains的员工花费了大量资源使Resharper成为现在的样子

如果您想将其插入Resharper的API中,那么所需的工作量会减少,但仍然会非常繁琐

但是,如果您只想编写自己的方法,该方法需要一个字符串参数作为调用方法的参数之一的名称,Jetbrains允许您使用它们的参数对方法参数进行注释。在本例中,您将使用
InvokerParameterNameAttribute

公共类Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    connect()

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    OpenFileDialog1.Filter = "image file(*.jpg *.bmp *.png)|*.jpg; *.bmp; *.png| all files (*.*)|*.*"
    If OpenFileDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
        PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)
    End If
End Sub

Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
    If OpenFileDialog1.FileName <> Nothing Or OpenFileDialog1.FileName <> "" Then
        txtname.Text = OpenFileDialog1.FileName.Substring( _
        OpenFileDialog1.FileName.LastIndexOf("\") + 1, _
        (OpenFileDialog1.FileName.LastIndexOf(".", 0) - (OpenFileDialog1.FileName.LastIndexOf("\") + 1)))

    End If
End Sub
Private Sub Form1\u Load(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理MyBase.Load
连接()
端接头
私有子按钮2\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理按钮2。单击
OpenFileDialog1.Filter=“图像文件(*.jpg*.bmp*.png)|*.jpg;*.bmp;*.png |所有文件(*.*)|*.”
如果OpenFileDialog1.ShowDialog Windows.Forms.DialogResult.Cancel,则
PictureBox1.Image=Image.FromFile(OpenFileDialog1.FileName)
如果结束
端接头
私有子OpenFileDialog1_FileOk(ByVal发送方作为System.Object,ByVal e作为System.ComponentModel.CancelEventArgs)处理OpenFileDialog1.FileOk
如果OpenFileDialog1.FileName为Nothing或OpenFileDialog1.FileName为“”,则
txtname.Text=OpenFileDialog1.FileName.Substring(_
OpenFileDialog1.FileName.LastIndexOf(“\”)+1_
(OpenFileDialog1.FileName.LastIndexOf(“.”,0)-(OpenFileDialog1.FileName.LastIndexOf(“\”+1)))
如果结束
端接头

End Class

我可能会丢失
if
语句-它与intellisense无关。即使是这样,你的回答也不能帮助我理解这种智能感知是如何实现的。从逻辑上讲,我可以自己判断应该抛出
num
。我不需要“逻辑上的”。我不懂intellisense,你有没有安装任何VS扩展来提供这种功能?@Jon谢谢你指出这一点。请参阅更新:)这是一个好主意,尝试从异常派生,但即使从ArgumentOutOfRangeException本身派生,并以完全相同的命名将其委托给所有的构造函数,也不起作用。关于扩展,你是对的——更新问题。这正是我一直在寻找的。干得好,谢谢你!这正是我需要的,但纪尧姆先回答了,所以我把它给了他+1尽管如此+关于InvokerParameterNameAttribute和外部注释的一个很好的技巧!接受纪尧姆的回答,因为他是第一个,并且提供了很好的答案。@YoryeNathan:我想我应该给出一个更简洁的答案,而不是花时间完整地回答这个问题。我通常做的是给出一个简洁的答案,然后编辑它来详细说明。最后回答得很好:)@YoryeNathan:我也经常这么做。我想今晚我只是反应迟钝。:-)未处理write ArgumentOutOfRange异常,如何解决它