我正在构建一个 ASP.NET 3.5 应用程序,并且想公开我在 WebService 类中拥有的枚举,而不将它用作我的 WebMethods 中的一个参数。
我有一个非常简单的例子来说明我想要什么......假设我有以下 WebService(我称之为 Agent.asmx):
<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Agent
Inherits System.Web.Services.WebService
<WebMethod(EnableSession:=True)> _
Public Function DoSomething(ByVal doWhat As WhatEnum) As Boolean
Return ...
End Function
End Class
Public Enum WhatEnum
AskStackOverflowQuestion
PhoneAFriend
FiftyFifty
End Enum
因为我在其中一个 WebMethods 中使用了 Enum,所以当在我的 .aspx 页面(来自http://localhost/Agent.asmx/js)中引用 WebService 时,它将在为代理生成的 JavaScript 中输出以下内容:
if (typeof(SomeNamespace.WhatEnum) === 'undefined') {
SomeNamespace.WhatEnum = function() { throw Error.invalidOperation(); }
SomeNamespace.WhatEnum.prototype = { AskStackOverflowQuestion: 0,PhoneAFriend: 1,FiftyFifty: 2}
SomeNamespace.WhatEnum.registerEnum('SomeNamespace.WhatEnum', true);
}
现在我可以在客户端的任何地方使用这些枚举。现在,这一切都很好而且很花哨,但是我的代理中有另一个枚举,我实际上并没有在任何 WebMethods 中使用它,我也希望在代理的 JavaScript 中自动公开它。有没有办法,也许是一个属性或我可以使用的东西,让它被包含在内?
如果没有,我的后备解决方案是创建一个以我的 Enum 作为参数的虚拟方法,以便它可用,并且永远不要从 JS 调用它,尽管我不想乱扔代码。谢谢!