可选参数
问题描述:
我有一个静态方法(在命名空间中常用的类CommonHelper),我想使用包括有像下面这样的定义静态资源:可选参数
public static string GetUrlForStaticResource(
String fileName, String folder="scripts", bool preventCaching=false)
你可以请参阅“文件夹”和“预防缓存”参数是可选的,因为它们具有默认值。当我调用该方法从.cs文件,它工作正常,但在我的.aspx我尝试以下,并得到了一个错误CS1501:为方法,没有超载“GetUrlForStaticResource”采取“1”参数:
<div>Example: <%= Common.CommonHelper.GetUrlForStaticResource("test.js") %></div>
如果我提供的所有参数工作正常:
<div>Example: <%= Common.CommonHelper.GetUrlForStaticResource("test.js", "scripts", false) %>
</div>
我在做什么错? .aspx中是否有可选参数?
答
我测试了这个,它适用于我。我使用.NET 4.0和CommonHelper作为静态类(没有显式构造函数)。
然后,我将Web项目更改为.NET 2.0。该项目建立,然后我得到在运行时报告相同的错误。
答
当然,您也可以为只接受一个参数的GetUrlForStaticResource创建一个重载,然后使用默认值从那里调用主方法。
+0
真实但默认的参数非常优雅。你只写一次方法文档而不是3次。它看起来很奇怪,它会在完全正常的代码中工作。即使Visual Studio intellisense也向我展示了可选参数。这只是一个运行时错误。 – styfle 2012-07-25 00:02:08
这很尴尬。这两个类(具有'GetUrlForStaticResource'和ASPX.CS的类)都在同一个项目上? – 2012-07-24 21:13:02
它应该工作。一切正常。检查是否在aspx – 2012-07-24 21:17:37
上导入Common类的命名空间是在与.aspx.cs文件相同的项目中,但不在.aspx文件中。我能想到的唯一事情就是用C#版本发生的奇怪事情。我将该项目设置为.NET 3.5,但它运行在.Net 2.0上,这很有趣。 – styfle 2012-07-24 21:20:30