• ú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
    ANDY_WARHOL
    ANDY_WARHOL --- ---
    SLUPKA: asi v tomto pripade mas pravdu, taky sem k tomu dosel, ale radsi sem se zeptal
    SLUPKA
    SLUPKA --- ---
    ANDY_WARHOL: Jak ověřovala? To je odpověď od serveru, takže výsledek připojení na server. To bys chtěl volat server 2x, jen kvůli tomu, abys zjistil, jestli to projde? Try catch mi tady přijde naprosto vyhovující.
    ANDY_WARHOL
    ANDY_WARHOL --- ---
    takovej rychlej dotaz, nejak to nemuzu vygooglit
    kdyz mi WebClientTimeOut.DownloadString vyhodi (400) Bad Request. muzu to chytit try catchem, ale neexistuje nejaky lepsi postup ? nenasel sem zadnou metodu, ktera by nejdriv request overovala.
    NECROMAN
    NECROMAN --- ---
    Jak jsem tu nedavno resil problem dynamickeho bindovani eventu na commandy ve WinRT, tak uz je to vyreseno:
    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
    protected override void OnAttached()
    {
        EventInfo evt = AssociatedObject.GetType().GetRuntimeEvent(Event);
        if (evt != null)
        {
            MethodInfo addMethod = evt.AddMethod;
            MethodInfo removeMethod = evt.RemoveMethod;
            ParameterInfo[] addParameters = addMethod.GetParameters();
            Type delegateType = addParameters[0].ParameterType;
            Action<object, object> handler = (s, e) => FireCommand(e as RoutedEventArgs);
            MethodInfo handlerInvoke = typeof(Action<object, object>).GetRuntimeMethod("Invoke", new[] { typeof(object), typeof(object) });
            Delegate @delegate = handlerInvoke.CreateDelegate(delegateType, handler);
    
            Func<object, EventRegistrationToken> add = a => (EventRegistrationToken)addMethod.Invoke(AssociatedObject, new object[] { @delegate });
            Action<EventRegistrationToken> remove = t => removeMethod.Invoke(AssociatedObject, new object[] { t });
    
            WindowsRuntimeMarshal.AddEventHandler(add, remove, handler);
        }
        base.OnAttached();
    }
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    URZA: V tech powertools to museli nejak udelat. Treba to bude na par radek :).
    URZA
    URZA --- ---
    TENCOKACISTROMY: jj vim, ale prave me slo o ty zkratky a pouziti z klavesnice.. nerad saham na mys. Tema pluginama mas na mysli neco konretniho?
    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
    Kliknutím sem můžete změnit nastavení reklam