2017-02-27 40 views
0

我正在使用protobuf-net(服務器)和protobuf.js(瀏覽器客戶端)的組合。Protobuf.js .toObject()與.NET類型

我有這樣一個.proto:

package Testy; 
import "bcl.proto"; // schema for protobuf-net's handling of core .NET types 

message Foo { 
    optional int32 ID = 1 (default = 0); 
    optional bcl.Decimal Bar = 2 (default = 0); 
} 

當我解碼傳入美孚ArrayBuffer並調用.toObject我怎麼插上bcl.Decimal轉換器()?

var testyPackage = "package Testy; import ... (continued)"; 
var bclPackage = "package bcl; message TimeSpan ... (continued)", 
    protoRoot = new protobuf.Root(); 
protobuf.parse(bclPackage, protoRoot); 
protobuf.parse(testyPackage, protoRoot); 

var buffer = new Uint8Array(someArrayBufferSomewhere..), 
    msg = protoRoot.Testy.Foo.decode(buffer); 


function convertsBclDecimalToNumber(bclDecimal) { 
    ... 
} 

var obj = msg.toObject({Decimal: convertsBclDecimalToNumber}) //This won't work 

回答

0

下面是我如何做,但這是圖書館的目的?

var x = protoRoot.Testy.Foo.decode(buffer); 
protoRoot.lookup("bcl.Decimal").toObject = myBclDecimalConverterFunctionReference 
return x.toObject(); 
+0

沒有預期的方法來實現這一點。你的解決方案對我來說很好。 – dcode

+0

榮耀歸於你!多謝,夥計。 – MaitlandMarshall