Serializando e desserializando árvores de expressão em C #


Respostas:


48

Continuei trabalhando na biblioteca que foi mencionada por Serializing and Deserializing Expression Trees in C #

Parece que o projeto foi abandonado (2008), mas fiz alguns trabalhos nele e agora ele funciona com .NET 4.0 e Silverlight. Fiz correções de bugs em seu código e também o tornei mais independente de DAL.

http://expressiontree.codeplex.com/


2
1 para chegar a uma solução funcional. Tentei usar a biblioteca original no MSDN e não conseguiu desserializar um nó de expressão binária simples. Seu projeto funciona muito bem. Obrigado!
— Jacobs Data Solutions

2
É um projeto no Nuget?
— Mohammad Dayyan

@MohammadDayyan, a Microsoft tem sido indecisa e inconsistente em sua ferramenta de gerenciamento de pacotes. Às vezes, os pacotes ASP.NET CORE podem ser instalados com o Nuget; em outros casos, por exemplo, um driver MongoDB não estará disponível através do NuGet. Ainda assim, pelo menos a Microsoft teve o insight para permitir que o NPM gerencie pacotes. É mais provável colocar isso no NPM
— T. Webster,

@RepoMan resolver um problema vale muito mais para mim quando ajuda alguém. Talvez você possa contribuir com alguma documentação sobre o uso - vamos conversar ..
— T. Webster

14

Outra opção é o projeto Expression Tree Serialization em code.msdn.com - parece ser mais o que é necessário aqui?

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


O código de serialização da árvore de expressão foi removido da galeria de códigos code.msdn.microsoft.com/exprserialization , alguma ideia para onde ele é movido ou alternativas melhores?
— Kiran Bheemarti

@Kiran: O que você quer dizer? O download do código ainda está lá; verifique a guia de downloads na parte superior da página.
— Robert Harvey

Sim é agora, provavelmente uma coisa temporária, a página estava lançando um erro de projeto não encontrado ontem quando tentei o link acima. Eu vejo o projeto e faço o download agora. Obrigado!!!
— Kiran Bheemarti

13

Existe um projeto no GitHub / Nuget chamado MetaLinq que visa tornar mais fácil trabalhar com árvores de expressão.

Ele converte entre Expressões normais e 'EditableExpressions' que são mutáveis ​​e totalmente serializáveis, então podem ser usadas com Json, Xml, Binary etc.

Verifique também esta postagem do blog para obter mais informações.


12

dê uma olhada em minha nova biblioteca Serialize.Linq . Ele serializa expressões linq para json, xml e binário.


você já usou isso antes? como foi sua experiência / encontrou alguma limitação?
— Alexandre Brisebois

usei uma versão semelhante em meu último projeto. funciona bem.
— esskar

Por que você escreveria algo que sangra ainda mais as linhas entre as camadas? Você está promovendo a exposição de objetos de domínio DAL ao BAL ... a menos que sua biblioteca de alguma forma converta DTOs (e as consultas contra eles) em objetos / consultas de domínio. Não vejo nada nos documentos que indique tal comportamento.
— M.Babcock

@ M.Babcock: o que você deseja usar em suas expressões DTO vs Entidades não faz parte da lógica da biblioteca.
— esskar

4
@esskar seu blog / site inteiro parece ter desaparecido. mudou?
— Jon

3

Não totalmente; no entanto, o exemplo Dynamic LINQ pode ajudar um pouco. Você certamente pode serializar uma expressão em uma string (até certo ponto - os genéricos parecem um pouco malucos), mas não há um analisador embutido.


Não consigo descobrir como serializar uma expressão em uma string usando o exemplo, apenas na outra direção, para tomar como string e criar uma árvore de expressão. Que método devo chamar?
— Christopher Edwards,


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.