C# Создать объект из значения в строковой переменной

Я хочу получить тип значения, хранящегося в переменной «результат». Предположим, я не знаю значение "результат", и значение приходит во время выполнения.

string result="System.IO.Directory";

MetadataReference[] references =
{
    MetadataReference.CreateFromFile(path: typeof(result).Assembly.Location)
}

Есть какой-либо способ сделать это?


person Emily Wong    schedule 07.12.2019    source источник
comment
Посмотрите, поможет ли этот вопрос: stackoverflow.com/questions/8012724/   -  person default locale    schedule 08.12.2019


Ответы (1)


Будет ли следующее утверждение работать для вас? Строка ниже должна быть в таком формате "FullyQualifiedName, AssembleName"

Type type = Type.GetType("System.IO.Directory, System.IO.FileSystem");
MetadataReference[] references =
{
    MetadataReference.CreateFromFile(path: 
     type.Assembly.Location)
 }

Полное сборкой имя типа, которое необходимо получить. См. раздел AssemblyQualifiedName. Если тип находится в текущей выполняемой сборке или в Mscorlib.dll, достаточно предоставить имя типа, уточненное его пространством имен.

Словом, эти решения всегда требуют некоторого размышления, и, хотя это инструмент не хуже любого другого, слишком много его может вызвать проблемы с производительностью.

person Athanasios Kataras    schedule 07.12.2019
comment
Этот код действительно работает? Я получаю синтаксические ошибки, делая на .net 4.7.1 - person Emily Wong; 07.12.2019
comment
Изменено на Type type = Type.GetType(System.IO.Direcory); и больше никаких ошибок. но он не может получить тип незагруженных ссылок. есть ли способ решить это? - person Emily Wong; 07.12.2019
comment
например следующее возвращает null Type type = Type.GetType(System.Drawing.Rectangle); - person Emily Wong; 07.12.2019