Игнорируя проблему, что весь этот дизайн звучит ужасно, я постараюсь ответить на ваш вопрос. Вы можете найти тип недвижимости с Type type = ...GetProperty(...).PropertyType
. Если тип был конкретным типом, а не интерфейсом, каким он является в настоящее время, вы можете использовать System.Activator.CreateInstance(type, null)
- где null
означает отсутствие аргументов конструктора - для создания экземпляра этого конкретного типа. Учитывая, что ваш тип свойства на самом деле является интерфейсом, вы не знаете, следует ли создавать список, массив, коллекцию или любой другой тип, который бы удовлетворял этому типу. Затем вам нужно будет использовать SetValue, чтобы назначить экземпляр свойству, но, конечно, мы не можем зайти так далеко.
Вы должны использовать эту информацию, чтобы переоценить свой дизайн, чтобы он не зависел от отражения, и вместо этого использовать общую параметризацию (посмотрите на ограничение new()
) и ленивую инициализацию свойств (если вы думаете, что это имеет смысл - мы не против читатели.)