Я использую карту структуры, чтобы автоматически вставлять DataContext в конструктор репозитория. Мне дано имя (например, «Project1»), и мне нужно динамически создать экземпляр репозитория для проекта.
Я использую стандартное соглашение об именах, поэтому я знаю, что это "Project1DataContext". Мне удалось создать экземпляр моего Project1DataContext, используя отражение, но это тип объекта. Проблема в том, что мне нужно передать объект Project1DataContext в мой репозиторий, чтобы создать его экземпляр. Как я могу сделать это с помощью отражения? Можно ли было бы использовать объект каким-либо образом?
Assembly myDataContextAssembly = typeof(SomeTypeInTheAssembly).Assembly;
Type dataContextType = myDataContextAssembly.GetType(ProjectName + "DataContext");
object dataContext = Activator.CreateInstance(dataContextType);
// I need to cast the data context here
IRepository<Project1DataContext> = new Repository<Project1DataContext>(dataContext)
Тем временем я буду использовать оператор if, но это не жизнеспособное решение, если у меня более 100 проектов. Мне нужно сделать это, используя отражение и в идеале , имея карту структуры, чтобы определить типы и ввести их для меня.