Привыкли к миксинам в языке с динамической типизацией? В C# их нет, и вряд ли будут, потому что типизация тут статическая. И приемы программирования - соответственно, другие.
В частности, чтобы добавить дополнительное свойство (или метод) в классы из разных иерархий наследования, используйте интерфейс. Примерно так (примеры - на основе кода из комментариев):
public interface IChosable {
bool IsChosen {get; set;} //Желательно имена писать таки на английском правильном
// а не ломаном. А то глаза режет.
//Ну, или хотя бы - по русски транслитом:
// Vybrano вместо IsChoised - и то лучше, IMHO
}
//...
public class ViewedDirectoryData : DirectoryDataEntity, IChosable
{
public bool IsChosen {get; set;}
}
public class ViewedOutputData : OutputData, IChosable
{
public bool IsChosen {get; set;}
}
Но свойства, таки да, придется определять в каждом классе, реализующем интерфейс (но можно перенести их, вместе с указанием реализации интерфейса, в базовые классы иерархий).
Удобство тут в том, что ссылку на любой из классов, реализующих интерфейс, можно привести к типу интерфейса - тогда и статический контроль типов сохраните, и работать со всем этими классами можно будет единообразно.