:reflection을 사용하여 객체 기본 클래스 속성을 인스턴스화 할 수 있습니까? 이처럼
public class remoteStatusCounts : RemoteStatus
{
public int statusCount;
public remoteStatusCounts(RemoteStatus r)
{
Type t = r.GetType();
foreach (PropertyInfo p in t.GetProperties())
{
this.property(p) = p.GetValue(); //example pseudocode
}
}
}
예는 (그것이 락스의 API에서의 - RemoteStatus 4 개 속성이) 조금 간단하지만, 기본 클래스 30 개 속성을 가지고 상상. 상속 된 클래스에 몇 가지 추가 속성 만 있으면 특히 모든 값을 수동으로 설정하고 싶지 않습니다.
답변은 대답을 암시하는 것 같습니다.
은 내가 (? 내가 틀렸다면 정정 해줘 내가 생각하는) 기본 클래스 생성자를 호출 할 수 있습니다,하지만 내 기본 클래스 생성자를 가지고 있지 않는 Using inheritance in constructor (publix X() : y)에서 본 - 그것이 JIRA의 WSDL에서 파생 된 것
public remoteStatusCounts(RemoteStatus r) : base(r) { //do stuff }
내가이 개 유효한 솔루션을 상상할 수 편집 : 위에서 설명한 하나, 그리고 this
포인터의 일종 역할을 type(baseclass)
이며 같은 조작 this.baseClass
같은 키워드의 일종.
public remoteStatusCounts(RemoteStatus r) {
RemoteStatus mBase = r;
//do work
}
EDIT2 : - 그래서, this.baseClass.name = "Johnny"
가의가없는 baseclass가 복사 생성자가 가정하자, 모든 의도와 목적을 위해 this.name = "Johnny"
과 똑같은 일이 될 것입니다, 이것은 유효한 코드입니다 이 질문은 나의 목적을 위해서 생각보다 운동이다. 나의 목적을 위해서 나는 쉽게 이것을 할 수 있었다. (내 "기본"이 복사를 할 수 있다고 가정 할 때)
public class remoteStatusCounts
{
public int statusCount;
public RemoteStatus rStatus;
public remoteStatusCounts(RemoteStatus r)
{
rStatus = r;
statusCount = getStatusCount();
}
}
코드 생성이나 차라리 그 경로를 선택하지 않는 것이 좋습니다. – scaryman
참고 : 클래스 이름은 대문자로 시작해야합니다. ' code-format-nazi>' – Aren