Skip to main content

Posts

Showing posts with the label extension

Can we mock an extension method?

Pentru teste mai mult ca sigur ati folosit un framework petru a face mock pe diferite obiecte. In general am folosit Moq pentru a putea face mock la date. Este destul de usor de folosit, mai jos puteti sa gasiti un exemplu: Mock<IService> serviceMock = new Mock<IService>(); serviceMock .Setup(x=>x.Call(It.IsAny<string>)) .Returns(()=> new Result()); Mai sus am creat un mock pentru IService, iar in momentul in care se apeleaza metoda Call cu orice parametru de tip string, se returneaza un nou obiect de tip Result. Nimic deosebit pana acuma. Dar ce se intampla daca vrem sa facem mock la un extension method. Vestea proasta este ca nu se poate face. Majoritatea framework-urilor pentru mock-ing nu suporta aceasta functionalitate. Cea mai buna solutie este sa refactorizam codul daca putem. Dar exista cazuri cand acest lucru nu il putem face sau extension method nu este declarat de noi si vine dintr-un assembly exterior. O solutie comuna, care poate sa fie...

Visual Studio 2010 extensions

Zilele acestea am fost constrans de un upgrade la OS care mi-a omorat masina sa instalez de la 0 toate aplicatiile. Mai jos o sa gasiti lista de extensii pentru Visual Studio 2010 pe care le folosesc: Code alligment - il folosesc cand am nevoie sa aliniez codul dupa un anumit caracter( de exemplu cand trebuie sa aliniez cateva linii de cod dupa '='). Indent Guides - traseaza linii verticale pentru fiecare nivel de intentare in parte. PowerCommands for Visual Studio 2010 -  mai multe comenzi pe partea de management la proiecte si soluÈ›ii. Productivity Power Tool - cel mai mare plus care l-a adus pentru mine a fost fereastra de add/remove references. Spell Checke r - face check la spelling pentru string-uri, comnent-uri si plain text. VSCommands 2010 - coloreaza diferit codul scris iar cand dam click dreapta pe un fiser/director/proiect/solutie ne ofera noi functionalitati precum: deschidere CMD cu path-ul setat in directorul curent, copy class, copy full path etc. ...

Cum sa salvezi un stream direct intr-un fisier

Cred ca este a 2-a oara când întâlnesc aceasta cerința in decurs de câteva săptămâni. Se da un stream și o locație unde trebuie salvat, se cere să se salveze conținutul la stream in locația data. Din păcate API-ul de .NET nu ne permite să facem acest lucru doar dintr-un apel. O soluție propusa este următoarea: /// <summary> /// Save the stream to the given location. /// </summary> /// <param name="stream">The stream.</param> /// <param name="filePath">The file path where is saved.</param> /// <param name="blockSize">The size of the buffer(in kB)</param> public static void SaveStream(this Stream stream,String filePath,SeekOrigin seekOrigin=SeekOrigin.Begin,int blockSize=1) { //Set the poinder to the begin of the stream. if(stream.CanSeek && seekOrigin==SeekOrigin.Begin) { stream.Seek(0, SeekOrigin.B...

jQuery - extension methods

De ceva vreme, Microsoft a inceput sa pompeze bani buni in jQuery. A fost integrat cu VS 2010( Visual Studio 2010), iar impreuna de MVC se integreaza perfect. Am fost surprins sa descopar ca jQuery permite extension methods. Se pare ca Microsoft isi pune amprenta pe acesta, iar in acest caz eu cred ca intr-un mod placut. Cum se declara: $.extend({ [nume_metoda]: function([lista_parametri]) { [corp_metda] } }); Cum se apeleaza: $.[nume_metoda]([lista_parametrii]) Ar fi interesant de folosit aceste metoda cand vrem sa declaram evenimente noi la anumite controale sau pentru a elimina helperele pe care le declaram uneori pentru tot felul de operatii.