以下に示すように、使用できる CSharp 式評価器に取り組んでいます。このコンポーネントは、コードを生成してメモリにコンパイルした後、生成されたアセンブリを読み込み、生成されたクラスのインスタンスを作成して実行します。結果は辞書に保存されます。
私の問題は、例外で失敗するコードの最後の行まで、すべて正常に実行されることです。
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException 'object' には 'FirstName' の定義が含まれていません。
ただし、Visual Studio はプロフェッショナルな変数コンテンツを表示できます。
Professional = { FirstName = Juan Pablo,
LastName = Ibañez,
Certifications = <>f__AnonymousType0`3[System.String,System.String,System.String][],
SayHi = System.Action }
そして、これはコードです:
static void Main(string[] args)
{
const string data = @"results[""professional""] =
new
{
FirstName = ""Juan Pablo"",
LastName = ""Ibañez"",
Certifications = new[]
{
new { Provider=""MSFT"", ExamCode = ""70-536"", Title = ""TS: Microsoft .NET Framework – Application Development Foundation"" },
new { Provider=""MSFT"", ExamCode = ""70-505"", Title = ""TS: Microsoft .NET Framework – Application Development Foundation"" },
new { Provider=""MSFT"", ExamCode = ""70-563"", Title = ""TS: Microsoft .NET Framework – Application Development Foundation"" }
},
SayHi = new System.Action(()=> System.Console.WriteLine(""Hi""))
};";
var eval = CSharpEvaluator.Evaluate(data); // return a disctionary<string, object>
dynamic professional = eval["professional"];
Console.WriteLine("First Name: {0}", professional.FirstName);
何か案は?
ありがとうございました。