Serializar y deserializar árboles de expresión en C #


Respuestas:


48

Continué trabajando en la biblioteca que se mencionó en Serializar y deserializar árboles de expresión en C #

Parece que el proyecto fue abandonado (2008) pero trabajé un poco en él y ahora funciona con .NET 4.0 y Silverlight. Hice correcciones de errores en su código y también lo hice más independiente de DAL.

http://expressiontree.codeplex.com/


2
+1 por encontrar una solución funcional. Intenté usar la biblioteca original en MSDN y no pude deserializar un nodo de expresión binaria simple. Tu proyecto funciona muy bien. ¡Gracias!
Jacobs Data Solutions

2
¿Es un proyecto en Nuget?
Mohammad Dayyan

@MohammadDayyan, Microsoft ha sido indeciso e inconsistente con su herramienta de administración de paquetes. A veces, los paquetes ASP.NET CORE se pueden instalar con Nuget, en otros casos, por ejemplo, un controlador MongoDB no estará disponible a través de NuGet. Aún así, al menos Microsoft tenía la información necesaria para permitir que NPM administrara paquetes. Es más probable que ponga esto en NPM
T. Webster

@RepoMan vale mucho más para mí resolver un problema cuando ayuda a alguien. Quizás pueda contribuir con alguna documentación sobre el uso, hablemos ...
T. Webster

14

Otra opción es el proyecto Expression Tree Serialization en code.msdn.com: ¿parece que hay más de lo que se necesita aquí?

UPD: ahora http://archive.msdn.microsoft.com/exprserialization


El código de serialización de árbol de expresión se elimina de la galería de códigos code.msdn.microsoft.com/exprserialization , ¿alguna idea de dónde se mueve o mejores alternativas?
Kiran Bheemarti

@Kiran: ¿Qué quieres decir? La descarga del código todavía está ahí; revisa la pestaña de descargas en la parte superior de la página.
Robert Harvey

Sí, es ahora, probablemente algo temporal, la página arrojaba un error de proyecto no encontrado ayer cuando probé el enlace de arriba. Veo el proyecto y lo descargo ahora. ¡¡¡Gracias!!!
Kiran Bheemarti

13

Hay un proyecto en GitHub / Nuget llamado MetaLinq que tiene como objetivo facilitar el trabajo con los árboles de expresión.

Convierte entre expresiones normales y 'expresiones editables' que son mutables y totalmente serializables, por lo que se puede usar con Json, Xml, Binary, etc.

También consulte esta publicación de blog para obtener más información.


12

eche un vistazo a mi nueva biblioteca Serialize.Linq . Serializa expresiones linq en json, xml y binary.


has usado esto antes? ¿Cómo fue tu experiencia / encontraste limitaciones?
Alexandre Brisebois

Usé una versión similar en mi último proyecto. funciona bien.
esskar

¿Por qué escribirías algo que sangra peor las líneas entre niveles? Está promoviendo la exposición de los objetos de dominio DAL al BAL ... a menos que su biblioteca de alguna manera convierta automáticamente los DTO (y las consultas en su contra) en objetos / consultas de dominio. No veo nada en los documentos que indique tal comportamiento.
M.Babcock

@ M.Babcock: lo que quiere usar en sus expresiones DTO vs Entities no es parte de la lógica de la biblioteca.
esskar

4
@esskar tu blog / todo el sitio parece haber desaparecido. se ha movido?
Jon

3

No en su totalidad; sin embargo, el ejemplo de Dynamic LINQ puede ayudar un poco. Ciertamente, puede serializar una expresión en una cadena (hasta cierto punto, los genéricos parecen un poco chiflados), pero no hay un analizador incorporado.


No puedo averiguar cómo serializar una expresión en una cadena usando la muestra, solo en la otra dirección, para tomarla como cadena y crear un árbol de expresión. ¿A qué método llamo?
Christopher Edwards


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.