serialize newtonsoft net jsonconvert example json.net linqbridge

newtonsoft - Accediendo a LinqBridge desde JSON.NET dll



newtonsoft.json example (1)

Estoy usando JSON.NET que tiene el .dll de LinqBridge fusionado. LinqBridge permite acceder a Linq desde .NET 2. Si intento utilizar Linq, incluso después de importar System.Linq , recibo el siguiente error:

Error 13 Could not find an implementation of the query pattern for source type ''int[]''. ''Where'' not found. Are you missing a reference to ''System.Core.dll'' or a using directive for ''System.Linq''? C:/Users/chrisl/Desktop/SoftTokens/Windows Desktop Soft-Token/Program.cs 27 25 WindowsSoftToken

Si trato de incluir LinqBridge, porque JSON.NET ya lo incluye, recibo esta advertencia. Además, he incluido el mismo componente dos veces, que es ineficiente:

Warning 2 The predefined type ''System.Action'' is defined in multiple assemblies in the global alias; using definition from ''c:/Users/chrisl/Desktop/SoftTokens/Windows Desktop Soft-Token/libs/Newtonsoft.Json.Net20.dll'' WindowsSoftToken

Si busco Newtonsoft.Json.Net20 en el navegador de objetos, veo que System.Linq aparece vacío, incluso después de haber seleccionado Show hidden types and methods .

¿Es posible acceder a Linq desde la DLL de JSON.NET o suprimir los mensajes de error?


La clase estática Enumerable que proporciona los operadores de consulta LINQ en el ensamblado LINQBridge aún está expuesta en el espacio de nombres System.Linq.

Aún necesita tener la directiva using para System.Linq como se indica en su primer mensaje de error.

Actualizar:

Resulta que el ensamblado de LINQBridge que se fusionó en Newtonsoft.Json.Net20.dll ha sido "internalizado", algo que no había notado al principio. Esto significa que su código no puede hacer referencia al tipo de enumerable que el compilador necesita para "implementar el patrón de consulta". Por lo tanto, debe hacer referencia al ensamblado LINQBridge usted mismo, pero luego recibe la advertencia sobre definiciones duplicadas como usted mencionó.

Puede desactivar la advertencia de clase duplicada yendo a la pestaña Construir de las propiedades de su proyecto e ingresar "1685" en el cuadro "Suprimir advertencias:".

Pero lo que probablemente sería mejor sería crear su propia versión de JSON.net desde la fuente sin fusionarse en LINQBridge.