Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在没有Json.Net依赖项的情况下使用SQLite Net扩展(使用替代的ITextBlobSerializer)?_C#_.net_Sqlite_Sqlite Net Extensions - Fatal编程技术网

C# 如何在没有Json.Net依赖项的情况下使用SQLite Net扩展(使用替代的ITextBlobSerializer)?

C# 如何在没有Json.Net依赖项的情况下使用SQLite Net扩展(使用替代的ITextBlobSerializer)?,c#,.net,sqlite,sqlite-net-extensions,C#,.net,Sqlite,Sqlite Net Extensions,我正在编写一个插件(.NETFramework 4.61),它使用SQLite网络扩展。这需要Newtonsoft的Json.NET提供给ITextBlobSerializer。反过来,Json.NET需要System.Numerics作为引用 该插件不能使用任何Nuget包,必须作为压缩源提交,然后在应用程序提供商的服务器上编译。目前的挑战是应用程序编译器不支持System.Numerics和System.Numerics,也不是可嵌入的互操作类型。我对要添加的System.Numerics的

我正在编写一个插件(.NETFramework 4.61),它使用SQLite网络扩展。这需要Newtonsoft的Json.NET提供给ITextBlobSerializer。反过来,Json.NET需要System.Numerics作为引用

该插件不能使用任何Nuget包,必须作为压缩源提交,然后在应用程序提供商的服务器上编译。目前的挑战是应用程序编译器不支持System.Numerics和System.Numerics,也不是可嵌入的互操作类型。我对要添加的System.Numerics的请求已被忽略

因为我没有办法使用System.Numerics,所以我最好的方法可能是摆脱Json.Net,用我自己的实现替换ITextBlobSerializer


是否有人能够提供没有其他依赖项的ITextBlobSerializer实现?我不知道如何在这方面继续下去。

事实证明,这并没有那么困难。我删除了
JsonBlobSerializer.cs
,它是唯一依赖于Json.Net的文件。然后,我创建了自己的ITextBlobSerializer实现,它利用Javascript序列化程序,如下所示:

using System;
using System.Web.Script.Serialization;
using SQLite.Extensions.TextBlob;

public class BlobSerializer : ITextBlobSerializer
{
    private readonly JavaScriptSerializer serializer = new JavaScriptSerializer();

    public string Serialize(object element)
    {
        var str = serializer.Serialize(element);
        return str;

    }

    public object Deserialize(string text, Type type)
    {
        var result = serializer.Deserialize(text, type);
        return result;
    }
}
最后,我在
textboboperations.cs
中编辑了
GetTextSerializer
方法,使其看起来像这样,因此我自己的ITextBlobSerializer成为默认值:

    public static ITextBlobSerializer GetTextSerializer()
    {
        // If not specified, use the Javascript serializer
        return _serializer ?? (_serializer = new BlobSerializer());
    }

您可以使用
textbloboOperations.SetTextSerializer
方法设置新的序列化程序

可以自定义用于存储和加载元素的序列化程序 通过实现简单的ITextBlobSerializer接口

如果未使用其他序列化程序,则使用基于JSON的序列化程序 使用TextBlobOperations.SetTextSerializer方法指定。使用 JSON序列化程序必须是对Newtonsoft JSON.Net库的引用 包含在项目中,也可以作为NuGet包提供