Приведение во время выполнения объекта Type - PullRequest
0 голосов
/ 29 июля 2011

Я хотел бы создать экземпляр объекта универсального класса во время выполнения;Я вызываю метод, который возвращает мне объект Type;Я хотел бы преобразовать этот универсальный класс в определенный класс, а затем создать экземпляры объектов этого класса.Является ли это возможным?Я писал на Java:

Class<DBConnectionProvider> dBConnectionProviderClass =
              (Class<DBConnectionProvider>)Configuration.getInstance().getDbConnectionProviderClass();

Метод getDbConnectionProviderClass () возвращает объект класса, который преобразуется во время выполнения;В моем приложении на C # этот метод возвращает объект Type;Можно ли преобразовать это в DBConnectionProvider и создать экземпляр этого класса?Спасибо за ваши ответы.

Ответы [ 2 ]

0 голосов
/ 29 июля 2011

Простой пример создания экземпляров классов с отражением (Java)

import java.awt.Rectangle;

public class SampleNoArg {

   public static void main(String[] args) {
      Rectangle r = (Rectangle) createObject("java.awt.Rectangle");
      System.out.println(r.toString());
   }

   static Object createObject(String className) {
      Object object = null;
      try {
          Class classDefinition = Class.forName(className);
          object = classDefinition.newInstance();
      } catch (InstantiationException e) {
          System.out.println(e);
      } catch (IllegalAccessException e) {
          System.out.println(e);
      } catch (ClassNotFoundException e) {
          System.out.println(e);
      }
      return object;
   }
}
0 голосов
/ 29 июля 2011

Когда у вас есть объект типа, вам просто нужно вызвать:

object o = Activator.CreateInstance([your type]).Unwrap();

или если вам нужно предоставить аргументы конструктора:

object o = Activator.CreateInstance([your type], obj1,obj2...).Unwrap();

А затем приведите к вашему типу.

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