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; }
}
}