У меня есть простой объект
[ProtoContract]
public class DataChangedEventArgs<T> : EventArgs
{
private readonly object key;
private readonly T data;
private readonly DataChangeType changeType;
///<summary>
/// Key to identify the data item
///</summary>
public object Key
{
get { return key; }
}
[ProtoMember(2, IsRequired = true)]
public T Data
{
get { return data; }
}
[ProtoMember(3, IsRequired = true)]
public DataChangeType ChangeType
{
get { return changeType; }
}
а у меня проблема с ключом. Его тип — объект, но он может быть либо int, либо long, либо string. Я бы интуитивно использовал атрибут ProtoInclude, чтобы сказать «ожидайте эти типы», но, к сожалению, они являются атрибутом только класса. Кто-нибудь знает, как я могу обойти это? Для фона ключ открытого объекта здесь по историческим причинам (и повсюду), поэтому я очень хотел бы избежать матери всех рефакторингов ;-) Любой шанс, что я мог бы получить это для сериализации, даже заставить его сериализовать как строка ?