konto usunięte

Temat: dynamic w 4.0 - wcale nie taki zły

Jak pierwszy raz usłyszałem o dynamic to mnie zmroziło, że z porządnego języka C# staje się językiem skryptowym i obiecałem sobie, że z dynamic nigdy nie skorzystam.
Ale właśnie znalazłem dobrą stronę - zakładając, że przez reflection chcemy odpalić jakąś metodę (znamy nazwę w design-time), to skorzystanie z dynamic raz, że uprości kod źródłowy a dwa, pominie e/w TargetInvocationException i uczciwie wyrzuci ten błąd, który napotka w wywoływanej metodzie.
Niby szczegół, ale w podanej sytuacji na dynamic jednak się skuszę:
using System;
using System.Reflection;

static class Program {
static void Main(string[] args) {
var someObj = new SomeObj();
//callSomeMethodReflection(someObj,0);
callSomeMethodDynamic(someObj,0);
}
static int callSomeMethodReflection(object o,int arg) {
MethodInfo mi = o.GetType().GetMethod("SomeMethod",BindingFlags.NonPublic | BindingFlags.Instance);
return (int)mi.Invoke(o,new object[] { arg });
}
static int callSomeMethodDynamic(dynamic o,int arg) {
return o.SomeMethod(arg);
}
}
internal sealed class SomeObj {
internal int SomeMethod(int a) {
throw new NotImplementedException("Nie gotowe");
}
}

konto usunięte

Temat: dynamic w 4.0 - wcale nie taki zły

Taki PHP się z tego zrobi ;-)


$func = "jestem_czytelnym_kodem";
$return = $func();
Stanisław P.

Stanisław P. Software designer

Temat: dynamic w 4.0 - wcale nie taki zły

maciek kański:
reflection chcemy odpalić jakąś metodę (znamy nazwę w design-time), to skorzystanie z dynamic raz, że uprości kod
Jeśli znasz nazwę w design-time, to nie da się w prawdziwym kodzie jakoś wstawić interfejsu w zamian? To by było jeszcze ładniejsze ;)

konto usunięte

Temat: dynamic w 4.0 - wcale nie taki zły

Stanisław Pitucha:
Jeśli znasz nazwę w design-time, to nie da się w prawdziwym kodzie jakoś wstawić interfejsu w zamian? To by było jeszcze ładniejsze ;)
Dobrze wiesz, że wtedy reflection nie jest potrzebne to i rzeczonego wątku bym nie zakładał:)

Oczywiście tak się pisać powinno.

konto usunięte

Temat: dynamic w 4.0 - wcale nie taki zły

maciek kański:
Jak pierwszy raz usłyszałem o dynamic to mnie zmroziło, że z porządnego języka C# staje się językiem skryptowym i obiecałem sobie, że z dynamic nigdy nie skorzystam.
A dlaczego język skryptowy ma być mniej "porządny" niż C#? I co to znaczy? :) Dla mnie na przykład jest to bardzo dobra wiadomość - obiekty COM można bardzo ładnie obsługiwać teraz, nie musząc pisać za dużo. Wszystkie ułatwienia i mechanizmy w językach i platformach są po to, aby je stosować, takie jest moje zdanie. Oczywiście na pewno są obszary, gdzie dynamic może powodować problemy, ale nie oznacza to, że bez niego by ich nie było :). A pisanie dynamicznego kodu mimo niezaprzeczalnych zalet wymaga także więcej dyscypliny - ale przecież każdy powinien się uczyć codziennie, więc i ta dyscyplina z czasem przyjdzie.

konto usunięte

Temat: dynamic w 4.0 - wcale nie taki zły

`Piotr Sowa edytował(a) ten post dnia 12.02.12 o godzinie 15:55
Stanisław P.

Stanisław P. Software designer

Temat: dynamic w 4.0 - wcale nie taki zły

maciek kański:
Stanisław Pitucha:
Jeśli znasz nazwę w design-time, to nie da się w prawdziwym kodzie jakoś wstawić interfejsu w zamian? To by było jeszcze ładniejsze ;)
Dobrze wiesz, że wtedy reflection nie jest potrzebne to i rzeczonego wątku bym nie zakładał:)

Oczywiście tak się pisać powinno.
Wiem, ale na wszelki wypadek wspomniałem, bo nie wiem jaki jest Twój przypadek. Zdarza się, że ludzie rzucają się na nowe feature'y zamiast chwilę pomyśleć i zrobić porządnie ;) (np. nadużywanie LINQ stało się popularne w poprzedniej wersji, zamiast podstawowych funkcji na liście..., itp.)

konto usunięte

Temat: dynamic w 4.0 - wcale nie taki zły

A dlaczego język skryptowy ma być mniej "porządny" niż C#? I co to znaczy? :)
Od zawsze C# był językiem kompilowalnym ze statycznym typowaniem i robienie z niego języka skryptowego jest dla mnie dziwnym posunięciem, bo jako programista C# oczekuję, że błędy otrzymam w czasie kompilacji a nie runtime.
Jako programista JavaScript tworzę i testuję kod w dość inny sposób i nie chcę tego mieszać w jednym języku.
Nic do skrypciarzy nie mam, sam w JS korzystam z możliwości, które oferuje.
Dla mnie na przykład jest to bardzo dobra wiadomość - obiekty COM można bardzo ładnie obsługiwać
no i po to właśnie dynamic powstał:)

Następna dyskusja:

NIe ma StringGrida




Wyślij zaproszenie do