есть код для примера:
var anon = new { Date = DateTime.Now, Command = "c1" };
Test_OK(anon);
new Second().Test_BAD(anon);
Методы Test_OK() и Test_BAD() — идентичны, отличие лишь в том, что лежат в разных сборках.
public void Test_OK(dynamic data)
{
MessageBox.Show("Type: " + data.GetType());
MessageBox.Show("Command: " + data.Command);
}
При вызове Test_BAD(anon) падает ошибка:
An unhandled exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in System.Core.dll
Additional information: "object" не содержит определения для "Command"
Вопросы:
1. Почему так происходит? Ведь тип правильно выводится.
2. Есть ли пути решения? Не хочется отказываться от dynamic, а необходимо обращаться к методам объектов другой сборки.
Здравствуйте, Lazarus, Вы писали:
L>Вопросы:
L>1. Почему так происходит? Ведь тип правильно выводится.
L>2. Есть ли пути решения? Не хочется отказываться от dynamic, а необходимо обращаться к методам объектов другой сборки.
http://www.heartysoft.com/ashic/blog/2010/5/anonymous-types-c-sharp-4-dynamic
и
http://stackoverflow.com/a/2993247/318263