在项目中考虑以下代码:
static void Main(string[] args)
{
DoSomething(new { Name = "Saeed" });
}
public static void DoSomething(dynamic parameters)
{
Console.WriteLine(parameters.Name);
}
这就像一个魅力。但是,一旦将这两个函数分成两个不同的项目,代码就会中断:
// This code is in a Console Application
static void Main(string[] args)
{
ExternalClass.DoSomething(new { Name = "Saeed" });
}
// However, this code is in a Class Library; Another project
public class ExternalClass
{
public static void DoSomething(dynamic parameters)
{
Console.WriteLine(parameters.Name);
}
}
我在第二种情况下得到的错误是:
object' 不包含 'Name' 的定义 (RuntimeBinderException)
为什么我会收到此错误?什么是替代方法?如何将动态参数传递给另一个库中的方法,并以简单的方式在那里使用它?
注意:我很熟悉,ExpandoObject
我不想使用它。