2016-04-21 8 views
1

私はSQLite-Net Extensionsを使用するプラグイン(.Net Framework 4.61)を作成しています。これらは、ITextBlobSerializerにNewtonsoftのJson.NETが存在することを要求します。 Json.NETはSystem.Numericsを参照として必要とします。Json.Net依存関係なしでSQLite-Net Extensionsを使用する方法(別のITextBlobSerializerを使用)

プラグインはNugetパッケージを使用できないため、zipソースとして提出してから、アプリケーションプロバイダのサーバーでコンパイルします。手元にある課題は、アプリケーションコンパイラがSystem.NumericsとSystem.Numericsをサポートしていないことです。また、埋め込み可能なinterop型でもありません。私のSystem.Numericsへのリクエストは無視されました。

私はSystem.Numericsを使用する方法がないので、おそらくJson.Netを取り除き、ITextBlobSerializerを自分の実装に置き換えることが最善の方法です。

他の依存関係のないITextBlobSerializerの実装を提供できる人は誰ですか?私はその前進の仕方がわかりません。

答えて

1

それはそれほど難しくありませんでした。私はJsonBlobSerializer.csを削除しましたが、それはJson.Netに依存する唯一のファイルでした。私は、このようなJavascriptのシリアライザを利用して自分のITextBlobSerializerの実装を作成しました:

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; 
    } 
} 

は、最後に私は自分のITextBlobSerializerがデフォルトになった。このように見えるようにTextBlobOperations.csGetTextSerializer方法を編集した:

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

あなたはTextBlobOperations.SetTextSerializerメソッドを使用して新しいシリアライザを設定できます。

単純なITextBlobSerializerインターフェイスを実装することによって、要素を格納およびロードするシリアライザを にカスタマイズできます。

TextBlobOperations.SetTextSerializerメソッドを使用して が指定されているシリアライザが他にない場合は、JSONベースのシリアライザが使用されます。 JSONシリアライザを使用するには、Newtonsoft Json.Netライブラリへの参照を にする必要があります。これはNuGetパッケージとしても利用できます。

https://bitbucket.org/twincoders/sqlite-net-extensions

関連する問題