2014-10-24 3 views
0

일부 속성이 포함 된 클래스와 해당 클래스를 상속하는 클래스가 추가 속성을 추가합니다. 불행히도 데이터 서비스에서 상속 된 클래스 만 가져올 수 있습니다. 하지만 슈퍼 클래스에서만 속성이 필요합니다. 이것이 어떻게 성취 될 수 있는가?하위 클래스에서 수퍼 클래스의 속성 만 가져 오기

나는 다음과 같은 클래스가 있습니다

namespace MA.ECCA.WebServices 
{ 
    public class Player 
    { 
     Public Player(); 

     public string fname{get; set;} 
     public string lname{get; set;} 
    } 

    public class PlayerData : Player 
    { 
     public PlayerData(); 

     public Stats stats {get; set;} 

    } 
} 

난 단지 플레이어의 특성을 가진 개체를 얻을 수있는 방법 형 PlayerData의 목적을 감안할 때? 나는 모든 데이터와 끝까지 두 경우 모두

Player player = GetPlayerStats();//returns object of type PlayerStats populated with data 

및 ...

Player player = (Player)GetPlayerStats(); 

를, 나는 단지 FNAME 및 LNAME가 들어있는 개체를 원하는 :

나는 다음 시도 ...

+0

데이터 서비스의 의미를 명확히하십시오. WCF 서비스? 다른 것? – user469104

+0

그것의 웹 서비스 나는 그것에 대한 많은 정보를 알지 못한다. 나는 웹 요청을 만들고 데이터로 채워진 PlayerData 객체를 돌려 준다. – Timigen

+0

왜 이걸 원하게되는지 설명 할 수 있을까요? 당신은 당신이 원하는 데이터를 가지고있는 객체를 가지고 있습니다. 그것을'Player' 타입의 객체처럼 사용할 수 있고 여분의 데이터를 완전히 무시할 수 있습니다. 추가 데이터없이 새 플레이어를 만들 수는 있지만 원하는 이유는 확실하지 않습니다. 일부 추가 컨텍스트는 우리에게 도움이되는 솔루션을 얻는 데 도움이 될 수 있습니다. – Chris

답변

2

정확하게 알고 있듯이 GetPlayerStats 메서드는 항상 PlayerData 유형의 개체를 반환합니다. 그리고 나는 이것이 바뀔 수없고 더 적은 수의 데이터를 받고 싶어한다는 것을 이해합니다. (통계는없고 이름 만).

특정 유형의 객체는 항상 동일하게 유지됩니다. 그것은 항상 같은 회원들을 유지할 것입니다. 그것은 갑자기 작아지지 않을 것입니다. Player 또는 심지어 object까지 전송하면 일부/모든 속성의 가시성이 낮아 지지만 여전히 해당 개체 안에 있습니다.

경우에 따라 Player 유형의 완전히 새로운 인스턴스를 만들고 첫 번째 개체의 데이터를 새 개체로 복사해야합니다. 예를 들어 자주 이렇게하면

public class Player 
{ 
    public Player(); 
    public Player(Player original) 
    { 
     fname = original.fname; 
     lname = original.lname; 
    } 

    public string fname{get; set;} 
    public string lname{get; set;} 
} 
... 
PlayerData playerData = GetPlayerStats(); 
Player player = new Player(playerData); 

, 당신은 일반적인 방법을 만드는 것을 고려하고 다음에 첫 번째 개체에서 속성을 복사하는 반사를 사용할 수 있습니다.

관련 문제