我收集的方式,與集合protobuf網需求GetEnumerator
系列化與Add
對反序列化類型工作時。是否有使用IReadOnlyCollection <T>/IReadOnlyList <T>與protobuf網
對於沒有Add
的類型,可以設置在反序列化之前執行的繼承類型。這適用於例如用IEnumerable
和List
:
[ProtoContract(ImplicitFields = ImplicitFields.AllPublic)]
public class Sheep
{
public IEnumerable<string> Children { get; set; }
public Sheep()
{
Children = new List<string>();
}
}
var dolly = RuntimeTypeModel.Default.DeepClone(new Sheep
{
Children = new[]
{
"Bonnie",
"Sally",
"Rosie",
"Lucy",
"Darcy",
"Cotton"
}
});
然而,當我做同樣的IReadOnlyCollection
(或IReadOnlyList
):
[ProtoContract(ImplicitFields = ImplicitFields.AllPublic)]
public class Sheep
{
public IReadOnlyCollection<string> Children { get; set; }
public Sheep()
{
Children = new List<string>();
}
}
我得到一個異常:
無法解析爲System.Collections.Generic.IReadOnlyCollection`1 [[System.String,mscorlib程序,版本= 4.0.0.0,文化=中性公鑰= b77a5c561934e089]]
因此,一個合適的添加方法,有沒有辦法使protobuf網手柄成員IReadOnlyCollection
/IReadOnlyList
?
編輯:我已經開了一個問題,這個功能對項目的資源庫:Support IReadOnlyCollection/IReadOnlyList members
您正在使用哪個protobuf庫?一個由marc? –
@YuvalItzchakov是的,protobuf網。 Skeet's是\t protobuf-csharp-port。 – i3arnon