• ú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
    NECROMAN
    NECROMAN --- ---
    BUTHRAKAUR: pouzivam MVVM Light s upravenymy zdrojaky, no nevadi...

    Jinak jaky mate nazor na frameworky, ktere pri kompilaci injectuji skript do vaseho kodu, typicky PostSharp pro zjednoduseni implementace INOtifyPropertyChanged a podobne? Sice to na obrazcich vypada hezky, ale ke mne do aplikace to nesmi, jakmile chce clovek debugovat kod, ktery je vygenerovany behem compile time, tak ma smulu.
    Design Pattern Automation – PostSharp
    http://www.postsharp.net/
    BUTHRAKAUR
    BUTHRAKAUR --- ---
    NECROMAN: z hlavy ted nevim, pze jsem delsi dobu WPF/SL nedelal, ale Caliburn/Micro to ma vyreseny - zkousel jsi se na nej kouknout?
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: asi tak, v SharePoint bylo bezne volani reflexi treba internal metody pro zakladani SPListu, protoze verejne API neumoznovalo vse potrebne. Pak byl treba problem, ze SP3 pro SP2007 zmenil signaturu tohoto internal interface a aplikace prestala fungovat, jo, take jsem od toho rad utekl :)
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    VIRTUALVOID: Tak ja nepredpokladam, ze bych neco takovyho pouzival v produkcnim kodu. To by musel bejt fakt hodne extremni pripad. Hacky jsem do produkce musel nasazovat zatim jen u Sharepointu a od nej jsem utekl.
    NECROMAN
    NECROMAN --- ---
    Vite o nejake best practice, jak pouzivat Dependency Injection v code-behind ve WPF/Silverlight pages? stranky nelze vytvaret pokud vim na vyzadani, ale vzdy musi obsahovat:

    public XYPage()
    {
    InitializeComponent();
    }

    Zatim to resim tak, ze si tam pres service locator v konstruktoru stranky vyzadam potrebny viewModel, ale co jsem cetl, tak explicitni volani ServiceLocatoru neni dobry zpusob.

    InitializeComponent();
    model = ServiceLocator.Current.GetInstance<MainViewModel>();

    Druha moznost me napada primo databinding DataContextu v XAMLu a v konstruktoru jen ulozeni teto instance.

    DataContext="{Binding Main, Source={StaticResource Locator}}"

    InitializeComponent();
    model = (MainViewModel)DataContext;
    VIRTUALVOID
    VIRTUALVOID --- ---
    TENCOKACISTROMY: ktory sa pri najblizsom update compilera zmeni...
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Tak tohle je super uber prasarna. Ale je to fakt peknej trik.
    SLUPKA
    SLUPKA --- ---
    NECROMAN: to je docela zajímavé a zajímalo by mne, jak moc jistě to funguje. Protože v době, kdy byl .NET 4.0 nový (neboli nevím, jestli se to ještě stále tak chová), tak pokud jsem udělal třídu s klasickým destruktorem (takový ten co obsahuje this.Finalize(false)) a při vytváření argumentů pro konstruktor padla výjimka, tak v debug režimu se nestalo nic (nebo jsem si ničeho nevšiml), ale v release režimu se zavolal destruktor a tam padla výjimka, protože this bylo null. Zajímavé bylo, že se mi nepodařila nijak odchytnout (ani na AppDomain unhandled exceptions), takže zjistit v čem byla chyba byla opravdu chuťovka. A jelikož jsem nikde GC.Collect nevolal, tak ta výjimka padala opravdu krásně náhodně.
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    ty vole, to je ale neskutecna prasarna :DDDD
    NECROMAN
    NECROMAN --- ---
    Tady je reseni, je to trik s rekurzivne volanymi konstruktory, vyjimkou v konstruktoru a ulozeni instance v destruktoru, tfuj!
    Detaily kdyztak zde (ani jsem netusil, ze se ta diskuze tak rozvine):
    Is it possible to define valid C# interface that cannot be implemented? - Stack Overflow
    http://stackoverflow.com/...it-possible-to-define-valid-c-sharp-interface-that-cannot-be-implemented
    public class CantDeriveMe
    {
        private CantDeriveMe()
        {
        }
        public override string ToString()
        {
            return "My type is " + this.GetType().ToString();
        }
    }
    
    public class OhYeah : CantDeriveMe
    {
        static OhYeah CapturedInstance;
    
        ~OhYeah()
        {
            CapturedInstance = this;
        }
    
        OhYeah() : this(1/String.Empty.Length)
        {
        }
        OhYeah(int blah) : this()
        {
        }
        public static OhYeah Create()
        {
            try
            {
                new OhYeah(4);
            }
            catch (DivideByZeroException)
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
            return CapturedInstance;
        }
        public static void test()
        {
            OhYeah it;
            it = OhYeah.Create();
            Console.WriteLine("Result was ({0})", it);
        }
    }
    H_U_N_T_E_R
    H_U_N_T_E_R --- ---
    NECROMAN: funkce FormatterServices.GetUninitializedObject vytvoří instanci, aniž by volala ctor (pravděpodobně prostě naalokuje na heapu vhodnej počet bytů a kašle na vše). Jak ale vytvořit instanci a zavolat ctor (bez relfexe) netuším :-(
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    NECROMAN: nema to nejaky staticky factory funkce?
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    taktez obecny deserializator bez reflexe si tak nejak nedovedu predstavit....
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    bez aktivatoru / reflexe fakt nevim :)
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    Jak rika SLUPKA, deserializatory obcas pouzivaj zpusob, kdy vytvorej instanci, ale zadnej konstruktor neni volanej. Reflexi nepouzivaj, maj na to nejakej jinej trik. Nezkoumal jsem ale jakej.
    SLUPKA
    SLUPKA --- ---
    NECROMAN: No, co deserializace? :)
    NECROMAN
    NECROMAN --- ---
    Kviz na nedeli, lze ziskat instanci tridy, ktera neni sealed, ale ma jediny konstruktor new(), ktery je private, zadne dalsi fieldy, property, metody? Bez pouziti reflexe, activatoru, atd.
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    URZA: ma to celkem rozumny stripping, cili tu velikost udrzuje jakztakz rozumnou (aspon u iosu to celkem fungovalo)
    PAJIN
    PAJIN --- ---
    Ahoj, nemate nekdo zkusenosti s Failed request tracingem na IISku ? Mam ho zapnutej a nastavenej, log soubory se me spravne vytvarej ale kdyz ten soubor otevru tak skoro kazdej GENERAL_RESPONSE_ENTITY_BUFFER je zakoncenej TRUNCATED... takze data toho response tam nejsou cely. Zkousel sem i nastavit maxLogFileSizeKb na 2048KB (ty responsy maj ted kolem 200KB) , ale nepomohlo. Nevite nekdo cim by to mohlo bejt ?
    URZA
    URZA --- ---
    ja asi vyzkousim tu HTML5+JS cestu.. ta moje appka bude prave hlavne GUI a velmi malinko logiky (i kdyz by se tam dal vyuzit pekne LINQ:)
    Kliknutím sem můžete změnit nastavení reklam