Вытащил со своего приложения код (без лишней специфики), который приводит к ошибке компилятора.
public class DataObject
{
public string Id { get; set; }
public int ObjType { get; set; }
}
public class ReferredObject : DataObject
{
public string Name { get; set; }
public string Remark { get; set; }
}
public class Model<TDataObject> where TDataObject : DataObject, new()
{
}
// строка ниже, ошибка компилятора: CS0310
public class RefferedObjectModel<TDataObject> : Model<TDataObject>
where TDataObject : ReferredObject
{
}
Текст ошибки:
'TDataObject' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'TDataObject' in the generic type or method 'Program.Model'
Семантически "ReferredObject" можно считать абстрактным, но синтаксически это не так, какая претензия у компилятора?
И да, понятно, что все дело в опции "new()" указанной при объявлении класса Model.
Подскажите как реализовать подобный функционал, учитывая что RefferedObjectModel - это не конечный класс от него будет происходить наследование?