Нравится:
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
}
}
}
Пример немного прост (он взят из Jira API - RemoteStatus имеет 4 свойства), но представьте, что базовый класс имеет 30 свойств. Я не хочу вручную устанавливать все эти значения, особенно если у моего унаследованного класса есть только несколько дополнительных свойств.
Размышления как бы намекают на ответ.
Я видел в Использование наследования в конструкторе (publix X (): y), что Я могу вызвать конструктор базового класса (я думаю? Поправьте меня, если я ошибаюсь), но у моего базового класса нет конструктора - он унаследован от jira wsdl
public remoteStatusCounts(RemoteStatus r) : base(r) { //do stuff }
edit Я могу представить 2 действительных решения: одно, описанное выше, и какое-то ключевое слово, например this.baseClass
, которое имеет значение type(baseclass)
и которым манипулируют как таковые, действуя как своего рода указатель на this
. Итак, this.baseClass.name = "Johnny"
будет тем же самым, что и this.name = "Johnny"
Для всех намерений и целей предположим, что базовый класс имеет конструктор копирования, то есть это допустимый код:
public remoteStatusCounts(RemoteStatus r) {
RemoteStatus mBase = r;
//do work
}
edit2 Этот вопрос скорее является мысленным упражнением, чем практическим - для моих целей я мог бы так же легко сделать это: (при условии, что мой "базовый класс" может делать копии)
public class remoteStatusCounts
{
public int statusCount;
public RemoteStatus rStatus;
public remoteStatusCounts(RemoteStatus r)
{
rStatus = r;
statusCount = getStatusCount();
}
}
</code-format-nazi>
- person Aren   schedule 19.06.2010