일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 백스트리트보이스
- 닷넷게시판리스트
- ASP.NET
- BSB
- 영화
- Perth
- 유용주
- 게시판페이징
- 김광석
- 가족영화
- 닷넷게시판만들기
- swell season
- 윈폰7
- U2
- 퍼스
- 닷넷DB연동
- 여행
- 안치환
- 광야에서
- 안치환콘서트
- wp7
- 서호주
- 안치환공연
- 웹프로그래밍
- 전라도여행
- asp
- 서호주여행
- live8
- The Frames
- 닷넷공부법
- Today
- Total
새로운 시작, GuyV's lIfe sTyle.
WCF 메소드 오버로딩 문제 본문
WCF에서 메소드 오버로딩시 오류가 발생했다. 전체 리스트를 가져오는 것과 ID값으로 가져오는 것.
서비스 참조 추가시 다음처럼 오류가 난다.
서비스 인터페이스에
[OperationContract]
List<SLBCategoryList> SLBCategoryList();
[OperationContract]
List<SLBCategoryList> SLBCategoryList(int rootCategory);
와 같이 등록되어 있는데, 설마 메소드 오버로딩이 안되는 것인가..
해서 구글귀신님께 여쭤봤다.
http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2006/09/20/Overloading-Methods-in-WCF.aspx
귀신님이 알려주신 낯익은 블로그에서..
누가 질문을 했었고. 간단한 답은 된다이다.
내가 친 코드는 C# 문법으론 문제가 없다. 메소드는 같은 이름을 가지고 있고. 그 메소드의 인자는 다르기 때문이다.
하지만.. WCF는 WSDL로 생성되므로 메시지 기반 통신이며, 상속이나 오버로딩 같은 객체지향 개념을 지원하지 않는다고 한다. 블로그 주인인 Jeff 님하는 여기서 WSDL 구버전에서 지원했었지만 최근버전은 지원이 안된다고 한다. 나 역시 .Net Framework 1.x 때 웹서비스로 뭐 하나 만들때 분명 메소드 오버로딩을 했었던 기억이다. 흠..
여튼, 이런 이유로 WCF는 같은 메소드 이름을 감지하면 코드상에서는 문제없지만 중복됐다고 오류를 내게 된다는데...
이는 다음처럼 해결 가능하다고 한다.
[ServiceContract]
public interface ICalendarService
{
[OperationContract(Name = "GetScheduledEventsByDate")]
ScheduledEvent[] GetScheduledEvents(DateTime date);
[OperationContract(Name = "GetScheduledEventsByDateRange")]
ScheduledEvent[] GetScheduledEvents(DateTime start, DateTime end);
}
그리고 내 것도 잘 작동한다..
'ⓟrogramming > .net' 카테고리의 다른 글
asp.net, Strict DTD의 <form> 태그 name 속성 문제 (0) | 2011.08.25 |
---|---|
ASP.NET 3.5 수동설정하기 (0) | 2011.01.24 |
asp.net 스마트 에디터 연동하기 (0) | 2011.01.12 |
내가 닷넷 공부했던 방법 (0) | 2010.10.07 |
C# 한글,영문 같이 길이 짜르기 (0) | 2010.04.29 |