• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    TENCOKACISTROMYProgramovani v C#, F# a dalsich jazycich pro .NET, Mono a ostatni CLI implementace
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    URZA: Ten novej solution explorer jde udelat pres right-click v solution exploreru.
    Zkratka nevim, asi jedine pres plugin.
    URZA
    URZA --- ---
    Pouzivate nekdo PowerTools? Ve verzi pro VS2010 bylo uplne super pod zkratkou CTRL+2 ze otevrelo novy floating okno solution navigatoru/exploreru ktery melo scope na aktualni tridu ve ktere clovek zrovna pracoval v text editoru + byl focus na serch boxu takze se dalo rovnou hledat. A cele se to dalo zavrit escapem.

    Ve VS2012 mi to chybi a nejde to takto pohodlne nastavit ani pres vlastni shortcuts v nastaveni..
    SAJAGI
    SAJAGI --- ---
    TENCOKACISTROMY: Díky. Zkouším udělat nějaký DLR wrapper nad pywin32, abych nemusel sám do C++, tak uvidíme.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    SAJAGI: Integroval jsem python pres IronPython do 3D studia (MaxScript <-> .NET <-> IronPython). Ale plnou interoperabilitu mezi "cistym" (C)Pythonem jsem neresil.
    SAJAGI
    SAJAGI --- ---
    Ahoj, používali jste volání funkcí z Python modulů z .NETu? Máme ve firmě nějaké řešení co používá C++/CLI nad Python/C API, ale určitě existuje něco hotového? IronPython bohužel použít nemůžeme - komponenta od jiného výrobce, kterou používáme, spoléhá na CPython.
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: nefunguje protoze RoutedEventArgs nebo ItemClickEventArgs nelze priradit do EventArgs.
    Shrnul jsem aktualni poznatky sem:
    windows 8 - How to dynamically bind event to command in WinRT without Reactive framework? - Stack Overflow
    http://stackoverflow.com/...to-dynamically-bind-event-to-command-in-winrt-without-reactive-framework
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Kdyz to zavolas vzdycky jako:
    Observable.FromEventPattern<EventArgs>(AssociatedObject, Event).Subscribe(delegate { FireCommand(); });

    Sezere ti to?
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: Ve zkratce chci prepsat toto:
    A WinRT behavior to mimic EventToCommand - Init
    http://www.be-init.nl/blog/12968/a-winrt-behavior-to-mimic-eventtocommand
    Aby to nebylo zavisle na Reactive Frameworku. Jedine misto, ktere ten framework vyzaduje je toto:
    Observable.FromEventPattern<RoutedEventArgs>(AssociatedObject, Event)
          .Subscribe(se => FireCommand());
    Takze otazka za pet bludistaku, jak to napsat ve WinRT bez Rx? :)
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    A fakt nutne potrebujes volat tu generickou metodu? Nemuzes ji volat jako negenerickou?
    Ono i ve "velkym" runtimu tohle neni uplne ono.
    NECROMAN
    NECROMAN --- ---
    Uz to skoro mam. Ted jen resim:
    mam "Type eventHandlerType" a nejakou metodu "FireEvent(object sender, RoutedEventArgs args)" kterou lze priradit do onoho Eventhandleru, jak to ale udelat dynamicky, aniz bych znal ten typ eventHandlerType?

    Toto funguje napr:
    RoutedEventHandler reh = FireEvent;
    ItemClickEventHandler iceh = FireEvent;
    potrebuji ale
    object eh = (eventHandlerType)FireEvent;
    NECROMAN
    NECROMAN --- ---
    JACHYMKO: ve WinRT je akorat:
    GetRuntimeMethod(this Type type, string name, Type[] parameters)
    kde parameters jsou parametry metody, to se ale dostavam do zacarovaneho kruhu, protoze ta metoda, kterou chci ziskat reflexi, ma jako parametr prave T
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Rika se tomu kovariance nebo kontravariance (furt si to pletu). A v ramci generics to v .net runtime uz jde. Jinak to jde jednoduse obejit zabalenim do ananomni metody. Ale nese to s sebou nevyhodu toho, ze pak predavas uz jinou instanci. Takze treba pridavani & odebirani z udalosti je timto zpusobem nepouzitelny.
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: nebylo by marne, pokud by neco takoveho nepridali do C# :) mam pocit, ze treba F# je v tomto dale, pokud se nepletu
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Delegat je trida jako kazda jina. Jen v ramci C# mas syntax sugar a muzes ho volat jako volas metodu. Priradit ho tam tedy nemuzes proto, ze ten slozitejsi z toho jednodussiho nededi.
    NECROMAN
    NECROMAN --- ---
    btw proc neni mozne priradit slozitejsiho delegata do jednodussiho?
    EventHandler eh;
    RoutedEventHandler reh = null;
    eh = reh; // chyba
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Kazdopadne, jestli tohle potrebujes delat, tak to je docela code-smell.
    Mel by mit spis nejakou negenerickou metodu, ktera je pro takovy ucely stvorena.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Musis si udelat delegata pres reflexi a pak na nem volat "DynamicInvoke".
    NECROMAN
    NECROMAN --- ---
    dotaz, jak volat generickou metodu, pokud mam onen typ ulozeny v Type?
    Type mujtypEventHandleru = ...
    // tento typ chci pouzit v nasledujici metode
    AssignEvent<T odpovidajici mujtypEventHandleru>(AssociatedObject, Event, FireCommand);
    
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    Ja teda s varem pri refactoringu nemel problem nikdy. A to refactoruju docela rad :).
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    ja teda na var taky nedam dopustit a udelo mi radost normalni cecko, ze uz ma taky :)
    Kliknutím sem můžete změnit nastavení reklam