গতিশীল এবং ExpandoObject ব্যবহার করতে গতকাল প্রকাশিত রোজলিনের নতুন সংস্করণ সহ যে উদাহরণটি এসেছে তা আমি সংশোধন করেছি তবে আমি একটি সংকলক ত্রুটি পাচ্ছি যা আমি কীভাবে ঠিক করব তা নিশ্চিত নই। ত্রুটিটি হ'ল:
(7,21): ত্রুটি CS0656: অনুপস্থিত সংকলকটির প্রয়োজনীয় সদস্য 'মাইক্রোসফ্ট.সিএসআরপি.রুনটাইমবাইন্ডার.সিএসআরপিআরগমেন্ট ইনফোর.ক্রেট'
আপনি কি এখনও নতুন সংকলকটিতে গতিবিদ্যা ব্যবহার করতে পারবেন না? আমি এটা কিভাবে ঠিক করবো? আমি আপডেট করেছি যে উদাহরণ এখানে:
[TestMethod]
public void EndToEndCompileAndRun()
{
var text = @"using System.Dynamic;
public class Calculator
{
public static object Evaluate()
{
dynamic x = new ExpandoObject();
x.Result = 42;
return x.Result;
}
}";
var tree = SyntaxFactory.ParseSyntaxTree(text);
var compilation = CSharpCompilation.Create(
"calc.dll",
options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary),
syntaxTrees: new[] {tree},
references: new[] {new MetadataFileReference(typeof (object).Assembly.Location), new MetadataFileReference(typeof (ExpandoObject).Assembly.Location)});
Assembly compiledAssembly;
using (var stream = new MemoryStream())
{
var compileResult = compilation.Emit(stream);
compiledAssembly = Assembly.Load(stream.GetBuffer());
}
Type calculator = compiledAssembly.GetType("Calculator");
MethodInfo evaluate = calculator.GetMethod("Evaluate");
string answer = evaluate.Invoke(null, null).ToString();
Assert.AreEqual("42", answer);
}
dynamic
প্রবর্তনের পরে থেকেই প্রয়োজনীয় ছিল।