2009-04-28 6 views
1

ASP.NET 3.5 응용 프로그램을 만들고 있는데 WebMethods에서 매개 변수로 사용하지 않고 WebService 클래스에있는 열거 형을 노출하고 싶습니다. WebMethod에서 Enum을 사용하지 않고 WebService의 클라이언트 JavaScript에 Enum을 노출합니까?

나는 이제 나는 다음과 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 

내가 하나에 열거를 사용하기 때문에

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); 
} 

지금 내가 가서 내가 원하는 곳이 열거 형을 사용할 수 있습니다 : WebService에가 (http://localhost/Agent.asmx/js)에서 내 .aspx 페이지에서 참조 할 때 에이전트에 대해 생성의 웹 메쏘드, 그것은 출력 자바 스크립트에 다음과 같은 것 클라이언트 쪽. 이제 괜찮습니다.하지만 에이전트의 자바 스크립트에서 자동으로 노출되기를 원하는 WebMethod에는 실제로 사용하지 않는 Enum이 있습니다. 그것이 포함될 수있는 방법이나 속성이 있습니까?

그렇지 않은 경우 내 폴백 솔루션은 내 Enum을 매개 변수로 사용하여 더미 메서드를 만든 다음 JS에서 코드를 호출하지 않기 때문에 코드를 낭비하지 않을 것입니다. 감사!

답변

1

분명히 가장 쉬운 해결책은 더미 방법을 만드는 것입니다. 왜 열거 형을 서비스에 전달하거나 어떤 식 으로든 서비스에서받지 못하면 JavaScript에서 사용할 수 있도록 웹 서비스의 열거 형이 필요한 이유가 궁금합니다.

+0

enum이 서비스에 사용되었습니다. 직렬화되어 JSON으로 반환되는 클래스의 속성으로 클라이언트에 전달됩니다. –

+0

더미 메서드를 사용하여 모든 작업을 수행하기로 결정했습니다. 구현하는 것이 가장 힘들었습니다. –

0

적어도 서비스에서 열거 형을 사용합니까? 그렇지 않으면 거기에 속하지 않습니다.

나는 [XmlInclude] 속성을 살펴보아야한다.

+0

enum이 서비스에 사용됩니다. 직렬화되어 JSON으로 반환되는 클래스의 속성으로 클라이언트에 전달됩니다. –

+0

그래서 방금 클래스를 정상적으로 반환했다면 열거 형이있을 것입니다. 맞습니까? [ScriptService]가 작동하지 않습니까? –

+0

나는 XmlInclude를 시도했다. WSDL만을위한 것이고 Enum에서 디렉토리를 작동시키지 않기 때문에 Enum에 더미 클래스 래퍼를 만들어야한다. –

관련 문제