2016-09-29 5 views
0

Имея ниже классов:ли приведение к базовому классу включает бокс и распаковка

public abstract class FieldElementBaseCL : FormElementBaseCL 
{ 
    public FieldElementBaseCL(FormElementGroupBaseCL parentElement, int linkedFieldID) : base(parentElement) 
    { 
     LinkedFieldID = linkedFieldID; 
    } 

    [DataMember] 
    [Browsable(false)] 
    public int LinkedFieldID { get; set; } 

    [Browsable(false)] 
    public LabelControl LabelComponent { get; set; } 

    public abstract FieldElementDTOBase GetElementDTO(); 

} 

[DataContract] 
public class FieldElementNumberEditCL : FieldElementBaseCL 
{ 
    public FieldElementNumberEditCL(FormElementGroupBaseCL parentElement, int linkedFieldID) : base(parentElement, linkedFieldID) 
    { 

    } 

    public override FieldElementDTOBase GetElementDTO() 
    { 
     FieldElementNumberEditDTOCL elementDTO = new FieldElementNumberEditDTOCL(); 

     return elementDTO; 
    } 
} 

Как вы видите, есть строка, которая создает экземпляр класса FieldElementNumberEditCL. Итак, GetElementDTO связаны с боксом/распаковкой, так как его тип возврата - FieldElementBaseCL?

ответ

3

Бокс и распаковка применимы только к типам значений. Типы значений - это объявленные struct. Вы не используете struct, вы используете class. Поэтому бокс/распаковка абсолютно неприменим для вас.

Смежные вопросы