2017-12-13 14 views
0

を除外:SignalR:私はこのようなクラスの持っている非シリアライズ可能型

public class MyData 
{ 
    public int Id { get; set; } 
    public String Name { get; set; } 
    public ThirdPartyClass { get; set; } // non serializable 
} 

を私は「非直列化可能」と述べた私は、このようにSignalRクライアント機能に私のクラスを渡すとき理由:

var hub = GlobalHost.ConnectionManager.GetHubContext<MyHub>(); 
var myData = new MyData(); 
// fill fields 
hub.Clients.All.data(myData); 

呼び出しがエラー500を返します。 問題のあるフィールドを削除すると、正常に機能します。

私はではありません。は、そのフィールドにクライアントを渡すことに関心があります。

今、私はこれを解決するには、2つの方法を知っている:

  1. は、カスタムのJSONシリアライザ
  2. は、唯一の関連フィールドを持つシャドウクラスを作成して値をコピーして、クライアント
  3. にこのクラスを送っ書きます

ダースのフィールドがあると、どちらも不快です。 シリアル化からフィールドを除外するために使用するDataAnnotationがあるかどうかは疑問です。

答えて

0

IgnoreDataMemberAttribute()を使用できますが、それがSignalRで動作するかどうかはわかりません。

それ以外の場合は、JsonIgnore注釈です。

最後に、ScriptIgnoreもあります。

IgnoreDataMember Class Reference

関連する問題