Мне очень нравятся динамические функции C # (динамическое ключевое слово C # 4 - почему бы и нет?), особенно потому, что в некоторых частях моего кода библиотеки я использую много рефлексии.
У меня двоякий вопрос:
1. заменяет ли динамический тип Generics, как в приведенном ниже случае?
Метод дженериков:
public static void Do_Something_If_Object_Not_Null<SomeType>(SomeType ObjToTest) {
//test object is not null, regardless of its Type
if (!EqualityComparer<SomeType>.Default.Equals(ObjToTest, default(SomeType))) {
//do something
}
}
динамический метод (??):
public static void Do_Something_If_Object_Not_Null(dynamic ObjToTest) {
//test object is not null, regardless of its Type?? but how?
if (ObjToTest != null) {
//do something
}
}
2. позволяет ли теперь dynamic методам возвращать анонимные типы, как в случае ниже?
public static List<dynamic> ReturnAnonymousType() {
return MyDataContext.SomeEntities.Entity.Select(e => e.Property1, e.Property2).ToList();
}
круто, ура
РЕДАКТИРОВАТЬ:
Поразмыслив над своим вопросом еще немного, и в свете ответов я вижу, что полностью испортил основной общий / динамический вопрос. Они действительно совершенно разные. Так что да, спасибо за всю информацию.
А как насчет пункта 2?