2012-07-24 85 views
1

我有一个静态方法(在命名空间中常用的类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中是否有可选参数?

+0

这很尴尬。这两个类(具有'GetUrlForStaticResource'和ASPX.CS的类)都在同一个项目上? – 2012-07-24 21:13:02

+0

它应该工作。一切正常。检查是否在aspx – 2012-07-24 21:17:37

+0

上导入Common类的命名空间是在与.aspx.cs文件相同的项目中,但不在.aspx文件中。我能想到的唯一事情就是用C#版本发生的奇怪事情。我将该项目设置为.NET 3.5,但它运行在.Net 2.0上,这很有趣。 – styfle 2012-07-24 21:20:30

回答

2

我测试了这个,它适用于我。我使用.NET 4.0和CommonHelper作为静态类(没有显式构造函数)。

然后,我将Web项目更改为.NET 2.0。该项目建立,然后我得到在运行时报告相同的错误。

1

当然,您也可以为只接受一个参数的GetUrlForStaticResource创建一个重载,然后使用默认值从那里调用主方法。

+0

真实但默认的参数非常优雅。你只写一次方法文档而不是3次。它看起来很奇怪,它会在完全正常的代码中工作。即使Visual Studio intellisense也向我展示了可选参数。这只是一个运行时错误。 – styfle 2012-07-25 00:02:08