XmlProtoSerializer должен сделать аналогичное определение. Например:
static int GetKey(TypeModel model, ref Type type, out bool isList)
{
if (model != null && type != null)
{
int key = model.GetKey(ref type);
if (key >= 0)
{
isList = false;
return key;
}
Type itemType = TypeModel.GetListItemType(type);
if (itemType != null)
{
key = model.GetKey(ref itemType);
if (key >= 0)
{
isList = true;
return key;
}
}
}
isList = false;
return -1;
}
Если это возвращает отрицательное значение, оно не может быть сериализовано. Я мог бы сделать это доступным в более поддерживаемом bool CanSerialize(Type)
, если это будет полезно?