Как я могу динамически оценивать код C#?
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Этот ответ был написан еще c-sharp в 2008 году. С тех пор ландшафт c-sharp сильно изменился.
Посмотрите c#-language на другие ответы на этой reflection странице, особенно на ответ property Microsoft.CodeAnalysis.CSharp.Scripting
.
Остальная часть ответа будет csharp оставлена в том виде, в visual-c# котором она была первоначально reflect опубликована, но уже не является c#-language точной.
К сожалению, C# не reflect является таким динамическим visual-c# языком.
Однако вы можете создать .cs-file файл исходного кода C#, полный c#.net классов и всего остального, запустить visual-c# его через поставщика CodeDom properties для C#, скомпилировать его c#-2.0 в сборку, а затем выполнить.
Этот .cs-file пост на форуме MSDN содержит c-sharp ответ с некоторым примером property кода ниже по странице:
create a anonymous method from a string?
Я c#.net бы не сказал, что это очень property хорошее решение, но все же .cs-file возможно.
Какой код вы собираетесь properties ожидать в этой строке? Если properties это второстепенное подмножество reflection допустимого кода, например, просто c#.net математические выражения, возможно, существуют reflection и другие альтернативы.
Редактировать: Что property ж, это учит меня сначала properties внимательно читать вопросы. Да, отражение csharp могло бы помочь вам здесь.
Если property вы разделите строку на ; во-первых, чтобы c#-language получить отдельные свойства, вы c#-language можете использовать следующий c-sharp код, чтобы получить объект visual-c# PropertyInfo для определенного csharp свойства для класса, а затем properties использовать этот объект reflect для управления конкретным c-sharp объектом.
String propName = "Text";
PropertyInfo pi = someObject.GetType().GetProperty(propName);
pi.SetValue(someObject, "New Value", new Object[0]);
Ссылка: PropertyInfo.SetValue Method
c#
reflection
properties
c#-2.0
Как я могу динамически оценивать код C#?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.