मैंने रोसलिन के नए संस्करण के साथ आने वाले उदाहरण को संशोधित किया जो कि गतिशील और एक्सपेंडेओबजेक्ट का उपयोग करने के लिए कल जारी किया गया था लेकिन मुझे एक संकलक त्रुटि मिल रही है जो मुझे ठीक नहीं है कि कैसे ठीक करें। त्रुटि है:
(7,21): त्रुटि CS0656: गुम संकलक आवश्यक सदस्य 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'
क्या आप अभी तक नए कंपाइलर में गतिकी का उपयोग नहीं कर सकते हैं? मैं इसे कैसे ठीक करूं? यहाँ उदाहरण है कि मैंने अपडेट किया है:
[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
शुरू करने के बाद से आवश्यक है ।