プロジェクトで次のコードを検討してください。
static void Main(string[] args)
{
DoSomething(new { Name = "Saeed" });
}
public static void DoSomething(dynamic parameters)
{
Console.WriteLine(parameters.Name);
}
これは魅力のように機能します。ただし、これら 2 つの関数を 2 つの異なるプロジェクトに分けるとすぐに、コードが壊れます。
// 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);
}
}
2番目のケースで発生するエラーは次のとおりです。
object' には 'Name' の定義が含まれていません (RuntimeBinderException)
なぜこのエラーが発生するのですか? 代替方法は何ですか?動的パラメータを別のライブラリのメソッドに渡し、そこで簡単な方法で使用するにはどうすればよいですか?
注: 私はよく知っているExpandoObject
ので、使いたくありません。