Получение переменной типа, зная имя типа C # - PullRequest
3 голосов
/ 10 июня 2010

Я разрабатываю класс TypeTranslator, у которого есть метод Type TranslateType(Type type). Этот метод получает тип интерфейса и, если есть класс имени интерфейса без начального I, он создает его, в противном случае возникает исключение. Вот некоторый код, чтобы прояснить то, что написано ранее:

class Program
{
    interface IAnimal { }
    class Animal : IAnimal { }</p>

<pre><code>void Function()
{
    TypeTranslator typeTranslator = new TypeTranslator();
    Assert(typeTranslator.TranslateType(typeof(IAnimal) == typeof(Animal)));
}

}

Можно ли получить то, что я хочу?
Спасибо за вашу помощь!

Ответы [ 4 ]

3 голосов
/ 10 июня 2010

Посмотрите на Type.GetType. Документацию можно найти здесь .

2 голосов
/ 10 июня 2010

Вы слышали о зависимой инъекции ? Может быть, это именно то, что вам нужно ...

См. что такое внедрение зависимостей и, возможно, на википедии , для получения дополнительной информации.

2 голосов
/ 10 июня 2010

Хотите получить имя типа из строковой переменной?Если да, то вы можете использовать метод Type.GetType .Конечно, метод ожидает, что имя типа будет определено его пространством имен.В качестве альтернативы, если вы не хотите ограничивать тип определенным пространством имен, вы можете получить все типы в сборке с помощью метода Assembly.GetTypes и найти тип с определенным именем.

0 голосов
/ 10 июня 2010

Возможно, вы захотите взглянуть на Object.GetType(), Assembly.GetTypes() (например, используя Assembly.GetExecutingAssembly()), Type.IsClass, Type.IsInterface, Type.Name (что похоже на FullName, но без полногоквалификатор) и класс Activator для создания экземпляра.Это в основном получение всех типов, их циклическая проверка, проверка, являются ли они типами классов, и является ли их имя именем интерфейса.

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