Skip to main content

Posts

Showing posts from August, 2011

Ioc - Autofac

Related posts:
IoC Definitie
Ninject Unity WindsorAutofac Structure MapMEF
Concluzie
Astăzi a venit rîndul la Autofac (http://code.google.com/p/autofac/) sa fie prezentat.
Clasa care se ocupa de container se numește ContainerBuilder. Folosind aceasta clasa putem sa înregistram sau sa rezolvam orice componenta. La fel ca si Ninject, paternul folosit pentru setup-ul containerului este fluent. Mai jos puteți sa găsiți un exemplu care arata cum se poate înregistra un element în container.
ContainerBuilder containerBuilder = new ContainerBuilder();
containerBuilder
.RegisterType<OderService>()
.As<IOrderService>();
Trebuie sa aveti grija ca intai se specifica clasa care implementează tipul pe care dorim sa îl mapam și doar apoi interfata (sau clasa care vrem sa o mapam). Autofac este destul de deștept ca sa poată detecta cu ce obiect vrem sa mapam un anumit tip. Este de ajuns sa specificam doar OrderService:
containerBuilder
.RegisterType<OderService>();
Constructor…

Silverlight - Diferente intre MAC OS si Windows OS.

Am fost întrebat zilele astea de doua persoane de limitările pe care le are Silverlight pe MAC OS. O sa încerc sa enumăr cîteva din aceste limitări mai jos.
1. Din cauza ca pe MAC unele tipuri de data nu exista sau sunt reprezentate diferit, este posibil ca metoda ToString() sa returneze valori diferite pe cele doua sisteme. Mai interesant este cand apelam ToString() pentru
Single.PositiveInfinity.ToString()
In cazul MAC-ului o sa obtinem "+oo", iar pe Windows o sa avem "Infinity".
2. Cand lucram cu informatii despre cultura (CultureInfo) rezultatele o sa difere intre cele doua sisteme chiar daca avem aceiasi cultura setata. Totodata TextInfo.ListSeparator pe MAC OS va returna mereu caracterul ',' indiferent de cultura pe care o avem setata.
3. Daca folosim metoda SaveFileDialog, aceasta nu o sa afiseze la user nici o eroare cand userul foloseste caractere invalide, dar in schimb se va arunca exceptia System.ArgumentException pe care noi trebuie sa face…

Ioc -Ninject

Related posts:
IoC Definitie
Ninject Unity WindsorAutofac Structure MapMEF
ConcluzieCu toți am auzit de IoC, dependency injection și toate nebuniile legate de ele.
Într-un post anterior am definit Ioc (http://vunvulearadu.blogspot.com/2010/11/ioc-dependency-injection-teorie.html) și am prezentat în cîteva cuvinte Ioc. In funcție de cum o sa îmi permită timpul vreau sa trec peste mai multe framework-uri de acest gen.
Iar apoi vreau sa compar aceste framework-uri și sa vedem plusurile și minusurile la fiecare.
In toate exemplele pe care urmează sa le dau o sa folosim următorul model de date:
interface IComputeService
{
public int Calculate(int value);
}
class ComputeService : IComputerService
{
public ComputerService(int state) { }
public int Calculate(int value) { }
}
interface IOrderService
{
public int GetTotal();
}
class OrderService
{
public OrderService(IComputerService computerService) { }
public int GetTotal() { }
}
Astăzi vreau sa incep sa vorbes…

(3) How to use Office in Silverlight applications

Lista postări despre Office interop pe Silverlight:
Part 1Part 2Part 3Si iată ca am ajuns la ultimul post din seria de 3 posturi despre Office Interop pe Silverlight.
Am rămas dator cu doua topice:
cum sa închidem un proces office;cum sa scriem unit teste;Pentru a putea închide procesul pe care îl avem pornit ajunge sa apelam direct metoda Quit(). Atenție, când se apelează aceasta metoda orice modificare deja făcuta nu o sa fie salvata. Pentru a putea face și save trebuie sa apelam și metoda metoda de salvare:
excelApp.Save();
excelApp.Quit();
In cazul în care dorim sa închidem doar un document separat putem sa apelam la metoda Close, care poate sa fie accesibila pentru fiecare document separat.

Testarea automata a unei aplicații care lucrează direct cu interop-ul de Office este destul de dificila. De exemplu cum putem sa testam dacă un document a fost deschis și este vizibil user-ului? Trebuie sa verificam ca avem în Windows o fereastra deschisa (lista de procese pornite în Windows nu este …