Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: MANULOMM en 18 Agosto 2008, 08:25 am



Título: SilverLight 2 + DataServicesQuery [.Net 3.5 SP1]
Publicado por: MANULOMM en 18 Agosto 2008, 08:25 am
Hola, estoy haciendo un pequeño proyecto, consiste en consumir un DataService (.svc) desde silverlight 2, he logrado acceder pero cuando ejecuto el siguiente metodo:

Código:
        private void Consultar(IAsyncResult Res)
        {
            DataServiceQuery<Contacto> Cont = (DataServiceQuery<Contacto>)Res.AsyncState;
            dgvDatos.ItemsSource = Cont.EndExecute(Res).ToList();
        }

arroja un error en la ultima linea, el error es este:
Citar
No hay constructor sin parámetros definido para este objeto.

me parce que si logra traer los datos, pues ejecuto solo el EndExecute(Res) y todo funciona bien, el lio esta al llamar al ToList(), la pila arrojada por el error es la siguiente:

Código:
en System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)

en System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)\r\n   en System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)

en System.RuntimeType.CreateInstanceImpl(Boolean publicOnly)

en System.Activator.CreateInstance(Type type, Boolean nonPublic)

en System.Activator.CreateInstance(Type type)

en System.Data.Services.Client.ClientType.CreateInstance()

en System.Data.Services.Client.MaterializeAtom.ResolveOrCreateInstance(ClientType type, Uri identity, Uri editLink, String etag, Object& currentValue)

en System.Data.Services.Client.MaterializeAtom.ReadNext(ClientType currentType, Type expectedType, AtomParseState atom, Object& currentValue)

en System.Data.Services.Client.MaterializeAtom.MoveNext()

en System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)

en System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)

en Contactos.Page.Consultar(IAsyncResult Res)

en System.Data.Services.Client.BaseAsyncResult.HandleCompleted()

en System.Data.Services.Client.QueryAsyncResult.AsyncEndRead(IAsyncResult asyncResult)\r\n   en System.IO.Stream.BeginRead(Byte[] buffer, Int32 offset, Int32 count, AsyncCallback callback, Object state)

en System.Data.Services.Client.QueryAsyncResult.AsyncEndGetResponse(IAsyncResult asyncResult)"

Gracias por la colaboracion,
Atentamente,

Juan Manuel Lombana
Medellín - Colombia


Título: Re: SilverLight 2 + DataServicesQuery [.Net 3.5 SP1]
Publicado por: sangano en 18 Agosto 2008, 16:05 pm
Hola, EndExecute() no te retorna una coleccion por si sola?, por que la estarias convirtiendo en una lista, ItemSource deberia darle lo mismo el tipo de coleccion que se le pasa.


Título: Re: SilverLight 2 + DataServicesQuery [.Net 3.5 SP1]
Publicado por: MANULOMM en 18 Agosto 2008, 21:48 pm
EndExecute Retorna IEnumerable<T> -> T es el tipo del DataServiceQuery<T> ItemsSource Recibe un IEnumerable<T> , List<T> implementa IEnumerable<T>, esto deberia funcionar, He buscado bastante pero todo el mundo lo hace de esta manera...


Atentamente,

Juan Manuel Lombana
Medellín - Colombia.