0
该问题似乎与传递给方法的Expando对象有关。如果我传入ExpandoObject,则应自动生成的编译器服务信息为空。如果您在方法中不使用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; }
}
}