Вы можете переопределить оператор приведения к
public class BasePadWI
{
protected WorkItem _workItemReference;
public WorkItem WorkItemReference { get { return _workItemReference; }}
public static implicit operator WorkItemReference(BasePadWI item)
{
return item._workItemReference;
}
.... Other stuff ......
}
Это может вводить в заблуждение, поскольку вы на самом деле не преобразуете BasePadWI в WorkItem, но это должно позволить вам легко создавать нужные списки.
Всякий раз, когда вы делаете что-то вроде следующего:
BasePadWI bpw = new BasePadWI();
WorkItem item = bpw;
bpw должен быть неявно преобразован в WorkItem, который благодаря объявленному оператору возвращает ссылку на внутренний WorkItem _pworkItemReference bpw.
Вы также можете использовать это, скажем, для приведения соединений с базой данных к целым числам, поэтому будьте осторожны, чтобы не сделать ваш код слишком сложным для интерпретации беднягой, который собирается его поддержать позже.