Я очень взволнован по поводу динамических функций в 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. «динамический» теперь позволяет методам возвращать анонимные типы, как в случае ниже?
public static List<dynamic> ReturnAnonymousType() {
return MyDataContext.SomeEntities.Entity.Select(e => e.Property1, e.Property2).ToList();
}
круто, ура
EDIT:
Обдумав мой вопрос немного больше, и в свете ответов я вижу, что полностью перепутал основной родовой / динамический вопрос. Они действительно совершенно разные. Так что да, спасибо за всю информацию.
А что насчет пункта 2?