

What you can’t do is to use those symbols in other .NET languages. The reason is that those languages do not have a concept of things existing outside of a class or struct scope.
In other words, even though the CLR supports it, languages other than C++/CLI do not support free standing functions, variables and constants.
Tako da tvoja tvrdnja ne stoji.
E, ko sve nema MVP danas

Elem, sledeci kod:
namespace NasMetadata {
const int MojaKonstanta = 42;
int MojaFunkcija(void)
{
return MojaKonstanta;
};
public ref class GCKlasa: Object
{
public:
void Poziv()
{
MojaFunkcija();
}
};
};
je proizveo DLL koji sam zakacio za poruku. Ako pogledas metadata blok i izboris se sa gomilom djubreta koju je C++ nabacao unutra, videces da MojaFunkcija nije free f-ja, ona je deklarisana u IL-u kao:
.class private auto ansi <Module>
{
.method assembly static int32 modopt([mscorlib]System.Runtime.CompilerServices.CallConvCdecl) NasMetadata.MojaFunkcija() cil managed
}
dakle privatni staticki metod privatne klase <Module>. I to je nacin na koji rade "free f-je" u C++/CLI-u, kompajlerskom prevarom, sve su staticke metode ove klase a namespace se simulira dot-separacijom u samom imenu metoda. Jel sad treba i dokaz da ovu "free-fju" mogu da pozovom preko refleksije u C#-u sad kad znam u kojoj klasi je? To sto je C++ kompajler mufte sve markirao kao private da sakrije svoju prevaru od ostalih CLS compliant jezika ne znaci da mu se ne moze doakati.
Kad pogledas implemenatciju GCKlasa::Poziv() dobices sledeci kod poziva staticke metode:
public: void __gc* Poziv()
{
<Module>::NasMetadata.MojaFunkcija();
}
Q.E.D.
Jbga, ne mogu da nadjem taj post, mozda vise i nije online, u svakom slucaju bilo je to jos u doba nastanka CLSa i radilo se o organizaciji GC-a i vezivanju root-va kreiranih objekata za tipove klasa, sto free f-je ne bi imale pa bi za njih morao da se radi posebni GC model sto bi isti usporilo pa su free f-je izbacene iz CLS-a jer ionako istu funkcionalnost postizes sa static metodama, i da je slicna prica vazila i za Javu, to je sve cega se secam. U principu i nije toliko vazno, necu se opirati mnogo.
Slazem se, multiple dispatch ne funkcionise automatski i jeste ogranicenje OOPa, ali ne vidim ni kako bi mogao da radi jer je totalna antiteza polimorfizmu (tj da vazi ono sto ti hoces, da je OO baziran na free f-jama, onda polimorfizam ne bi radio)
Bar koliko sam ja vidjao do sada, pribegavanje multiple dispatch-u je uglavnom bilo posledica loseg OO planiranja i adhoc razvoja sto je izmedju ostalog i tvoj primer. Vidis samim tim sto si uveo raznorodne operacije (kako rece, uvrnuto sabiranje


Sve je ovo moglo da se organizuje i drugacije i ne bi ti trebao multiple dispatch i to je do sad uvek bila situacija i sa ostalim ozbiljnijim multiple dispatch problemima.
PS: Zaboravih da okacim DLL, evo ga sada.
[Ovu poruku je menjao mmix dana 20.10.2008. u 14:52 GMT+1]
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić