2

Я пытаюсь создать экземпляр типизированного набора данных динамически в моем коде во время выполнения. У меня есть тип доступен для меня, но когда я пытаюсь сделать это:Определить типизированный набор данных динамически?

object obj = Activator.CreateInstance(Type.GetType("TYPED DATASET TYPE HERE")); 

Проблема типа, кажется, не действуют в соответствии с кодом, когда я пытаюсь и запустить его. Что я могу делать неправильно?

+0

Может возникнуть ряд проблем, связанных с asp.net. Хорошим первым шагом для локализации проблемы является создание экземпляра из приложения библиотеки, консоли или winforms. –

+0

Re comment - на самом деле, typeof (TheKnownType) .Assembly.GetType (...) должен делать; нет необходимости создавать экземпляр. –

+0

Еще одна вещь, которую я обнаружил, когда на самом деле пытаюсь ее применить ... Обязательно добавьте .Unwrap() в конец, чтобы вы могли применить ее к любому типу объекта, который вам нужен. Это позволило мне включить его в качестве стандартного документа, который мне нужен. – Noah

ответ

3

Где находится определенный тип? (какая сборка).

Если вы не дадите ему ассемблированное квалифицированное имя, оно будет выглядеть только в , вызывающем сборку, и несколько других сборочных узлов. Опции:

  • использовать сборочный квалифицированное имя ("somen.amespace.sometype, someassembly, ...")
  • получить экземпляр Assembly (от известного типа в этой сборке), а также использовать GetType(fullyQualifiedName) на Assembly пример
+0

Спасибо за предложение! То, что я закончил, это создать локальный известный экземпляр, а затем вызвать gettype() на этом объекте и использовать его свойства. Указание сборки, похоже, решило эту проблему. – Noah

0

Предполагая, что вы испускаете правильный код набора данных, вам также может потребоваться загрузить сборку.

Просмотрите следующие пространства имен .net names.png и отражение.

Вы также можете посмотреть проекты с открытым исходным кодом, такие как windsor, которые используют отражение, чтобы испускать новые классы для создания перехватчиков. Там может быть код, из которого вы можете учиться.