public class BaseTVItemViewModel<U> : ViewModelBase where U : EntityObject { Interfaces.IsTreeModel<U> _treeModel; List<BaseTVItemViewModel<U>> _children; BaseTVItemViewModel<U> _parent; public BaseTVItemViewModel(Interfaces.IsTreeModel<U> tm) { _treeModel = tm; } public BaseTVItemViewModel<U> Parent { get { if (_parent == null) { _parent = new BaseTVItemViewModel<U>((Interfaces.IsTreeModel<U>)_treeModel); } return _parent; } set { _parent = value; } } public List<BaseTVItemViewModel<U>> Children { get { if (_children == null) { _children = new List<BaseTVItemViewModel<U>>(); foreach (U u in _treeModel.GenericChildren) { _children.Add(new BaseTVItemViewModel<U>((Interfaces.IsTreeModel<U>)u)); } } return _children; } } public virtual void LoadItems() { } }I wanted to make the LoadItems() method abstract but I can't make the class abstract because constructing a new instance of an abstract class (as in the Children property) isn't allowed :-{