Как я могу динамически оценивать код C#?

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Этот ответ был написан еще reflection в 2008 году. С тех пор ландшафт c-sharp сильно изменился.

Посмотрите property на другие ответы на этой c# странице, особенно на ответ c# Microsoft.CodeAnalysis.CSharp.Scripting.

Остальная часть ответа будет visual-c# оставлена ​​в том виде, в visual-c# котором она была первоначально reflection опубликована, но уже не является c#.net точной.


К сожалению, C# не c#.net является таким динамическим .cs-file языком.

Однако вы можете создать c#-2.0 файл исходного кода C#, полный c#-language классов и всего остального, запустить csharp его через поставщика CodeDom c#-2.0 для C#, скомпилировать его csharp в сборку, а затем выполнить.

Этот c#-language пост на форуме MSDN содержит c#-2.0 ответ с некоторым примером c#-2.0 кода ниже по странице:
create a anonymous method from a string?

Я .cs-file бы не сказал, что это очень property хорошее решение, но все же reflection возможно.

Какой код вы собираетесь properties ожидать в этой строке? Если c#.net это второстепенное подмножество property допустимого кода, например, просто c-sharp математические выражения, возможно, существуют reflection и другие альтернативы.


Редактировать: Что c#.net ж, это учит меня сначала c#-language внимательно читать вопросы. Да, отражение property могло бы помочь вам здесь.

Если c-sharp вы разделите строку на ; во-первых, чтобы visual-c# получить отдельные свойства, вы properties можете использовать следующий c# код, чтобы получить объект reflect PropertyInfo для определенного c# свойства для класса, а затем c-sharp использовать этот объект c#-2.0 для управления конкретным csharp объектом.

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

2022-10-30T05:21:56+00:00
Вопросы с похожей тематикой, как у вопроса:

Как я могу динамически оценивать код C#?