Hvala puno za odgovor, mada mi i dalje nije jasno sta se tu desilo:
>EntityWrapper<Osoba>.Validate(Osoba)
>Greska je jasna: The best overloaded method match for 'MyCoreAssembly.EntityWrapper<SampleDynamicGen.Osoba>.Validate(SampleDynamicGen.Osoba)' has some invalid arguments
I dalje mi nije mi jasno gde je greska.
Bazni metod je EntityWrapper<T>.Validate(T entity). Samim tim izvedeni je EntityWrapper<Osoba>.Validate(Osoba entity). Zahvaljujuci templatingu to je isto kao da pise EntityWrapperOsoba.Validate(Osoba entity). Ako imam instancu EntityWrapperOsoba u dinamickoj referenci
dynamic r i pozovem r.Validate(Osoba o), ako
o jeste osoba (a jeste) onda nema razloga za pomenutu gresku. Procitacu par puta tvoj post pa ce mi valjda biti jasno
EDIT:
Aha sad mi je jasno, on trazi OsobaWrapper.Validate(
EntityObject osoba) i ne naravno ne moze da ga nadje. Hvala jos jednom
Sto se tice dobijanja wrapera bez atributa priznajem da nisam znao da se informacije o generickim tipovima propagiraju u runtime i da se mogu dobiti reflectionom, mislio sam da je to samo templating engine koji radi search&replace pred kompajliranjem.
Sto se predloga za factory pattern tice ne mogu da ga implementiram jer EntityObject nije moja klasa kao u tvom primeru, nego je System.Data.Objects.DataClasses.EntityObject i kada importujem bazu u model svi entiteti (npr. Osoba) nasledjuju taj EntityObject. EF4 podrzava POCO, ali je to dosta vise posla i zaboravi na GUI model editor. Upravo zbog toga sam i pravio te wrappere, inace bi Validate bio metod klase EntityObject. Wrapperi pored Validate imaju i New, Query i Delete, a te operacije su vezane na ObjectContext i zato su u DataManageru, jer mi Datamanager enkapsulira i kontekst i UnitOfWork. Na ovaj nacin je kontekst i sve ostalo data-aware odvojeno u svom assembliju, i ostatak programa (GUI, WebPage...) radi samo sa objektima.
[Ovu poruku je menjao Boris B. dana 09.12.2010. u 15:35 GMT+1]
[Ovu poruku je menjao Boris B. dana 09.12.2010. u 15:38 GMT+1]