0
이 문제는 메서드에 전달되는 Expando 개체와 관련이있는 것 같습니다. ExpandoObject를 전달하면 자동 생성되어야하는 컴파일러 서비스 정보가 비어 있습니다. 메서드에서 ExpandoObject를 사용하지 않으면 정보가 잘 전달됩니다. 문제는 따라서는 처리, 당신이 호출을 지연하는대로의 dynamic
키워드로는 ExpandoObject
하지ExpandoObject 사용시 컴파일러 서비스 정보가 누락되었습니다.
public class TestClass
{
public void TestWithClass(object SomeClass, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
{
Console.WriteLine(memberName); // Compiler Services information prints out just fine.
}
public void TestWithExpando(ExpandoObject xPando, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
{
Console.WriteLine(memberName); // Compiler Services information is blank
}
public void RunTest()
{
//This test case works fine.
var jnk = new Junk {Test = "TEST DATA"};
TestWithClass(jnk);
//This test case fails to print the Compiler Services information.
dynamic xp = new ExpandoObject();
xp.Test = "TEST DATA";
TestWithExpando(xp);
}
public class Junk
{
public string Test { get; set; }
}
}