[ negyxo @ 26.05.2008. 13:46 ] @
OK, interesuje me sledeca stvar. Da li koristiti intefejse u .NET kao u COM-u? Znaci, da bi ocuvali backward compatibility, deklarisati svaki put novi interfejs kada se pojavi potreba za novom funkcionalnoscu

Primer
Code:

interface IMyClass
{
   void Foo()
   ...
}

interface IMyClass2
{
   void Foo()
   ...
}
...


Pa tako nikad direktno ne koristiti klase nego interfejse u kodu gde je potrebna ta funckionalnost, recimo assembly1

Code:

...
IMyClass = MyClassFactory.GetMyClass()


assembly2

Code:

...
IMyClass2 = MyClassFactory.GetMyClass2()


Ili jednostavno deklarisati novu metodu u klasi

Code:

class MyClass
{
   void foo();
   void Foo2()
}










[ mmix @ 26.05.2008. 14:18 ] @
To verziranje preko interfejsa se koristilo samo za COM koji nije imao svoj versioning control da bi se osigurala backward kompatibilnost.
.NET ima svoj versioning koji funkcionise na nivou asemblija, pogledaj malo u Assembly Versioning i podlinkove da vidis kako to funkcionise, ali efektivno svaki asembli ima verziju koja se sastoji iz 4 broja (major, minor, build, revision) i .NET dozvoljava side-by-side asemblija sa istim imenom ako su ima major i minor razliciti.

Znaci ako imas assemblje "Negyxo, 1.1.122.0" i "Negyxo, 1.5.0.1455" oni mogu da postoje zajedno i program koji koristi starri ce ucitati stari, koji koristi novi ucitace novi, a ti uvek mozes da pustas patcheve (npr. 1.1.123.0 i 1.5.1.0) koji ce da zamene postojece ali u tom slucaju si ti kao autor duzan da obezbedis da metadata asemblija bude kompatibilan u okviru istog major/minor.
[ negyxo @ 26.05.2008. 17:46 ] @
Hvala na odgovoru. Interesovalo me samo da li postoji smisao to raditi pored .NET versioning sistema.