2010-12-30 2 views
1

안녕 모두들 카탈로그 매니저에서 일하고 있습니다.동일한 속성 (유형, 숫자, ..)을 가지고 있지만 다른 이름을 가진 2 개의 클래스를 어떻게 캐스팅해야합니까?

나는이 개 수업을 :

먼저 하나를 XML 파일 2의 xsd.exe 발전기에서 가져온 : WebService에 프록시 클래스에서 뜨거운

살전 2 개 클래스는 단지 같은 (같은 attributs)입니다 예 :

내가 캐스팅 할 수있는, 어떻게 영향을 미치는지
public partial class CatalogPackageAMSApp_Data { 

    private string appField; 

    private byte nameField; 

    private string valueField; 
} 

public partial class AppData { 

    private string appField; 

    private string nameField; 

    private string valueField; 
} 

, ... 그 2 개 클래스 서로 것은 그들이 2 differents의 팀 devloped한다는 것이다.

안부

I'am은 더 이상 설명

답변

7

두 부분 클래스입니다. 해당 속성을 사용하여 동일한 인터페이스를 연결하기 만하면 둘 다 인터페이스 유형으로 변환 할 수 있습니다.

서로간에 관련이 없으므로 둘 사이에서 전송할 수 없습니다. 기본 클래스 또는 인터페이스에는 공통성이 있어야합니다.

0

가 정확히 같은 경우에에 avialable, 당신은 다른 상속을 변경할 수없는 이유가 무엇입니까? 그런 다음 유형 간의 형변환은 간단합니다. 두 가지 모두 자동 생성되므로 자동 생성 빈도가 낮은 클래스를 수정합니다.

+0

나는이 두 가지 방법을 시도 할 것이다. – Yagami

2

기본적으로는 동일한 클래스가 아니며 CatalogPackageAMSApp_Data의 인스턴스는 AppData의 인스턴스가 아니며 그 반대의 경우도 마찬가지입니다.

당신 할 두 사이의 변환 방법/생성자 쓰기입니다 - 아마도 및 변환 연산자를 구현합니다. 개인적으로는 변환을 수행 할 때 메소드가 더 분명해 지므로 메소드 방식을 선호합니다.

정말로 두 클래스가 있습니까? 실제로 두 개의 클래스가 필요한 경우에는 둘 다 컴포지션을 사용하여 실제 데이터가 들어있는 공통 클래스 인 세 번째 인스턴스를 포함 할 수 있습니까?

0

이 상황에 해당되는지 확실하지 않지만 웹 서비스 프록시 생성기 (WCF를 사용하고 있다면 svcutil.exe, 그렇지 않은 경우 wsdl.exe)는 생성 할 때 기존 유형을 재사용 할 수 있다고 생각합니다. 웹 서비스 프록시. 프록시를 공유하는 형식을 생성하는 방법에

http://blogs.msdn.com/b/lifenglu/archive/2007/05/09/type-sharing-in-wcf-service-reference.aspx

다른 링크 :

svcutil.exe redundant proxy classes

http://msdn.microsoft.com/en-us/library/aa347733.aspx

당신이 .NET 2를 사용하는 경우.0 :

wsdl.exe /sharetypes

http://msdn.microsoft.com/en-us/library/7h3ystb6%28v=vs.80%29.aspx

0

나는 둘 사이의 공통 인터페이스가 올바른 해결책이 될 것이라고 말하고 싶지만. 옵션이 아닌 경우 Automapper (http://automapper.codeplex.com/)를 사용하여 매핑을 처리 할 수 ​​있습니다.

관련 문제