Рассмотрим этот код в проекте:
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
, и я не хочу его использовать.