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.