@Piligr1m

Как сериализовать поле класса, которое является объектом, описанным в другой сборке(dll)?

Я использую Microsoft.CodeAnalysis.CSharp.dll в моем проекте. У меня есть класс, свойство этого класса является объектом, который был описан в Microsoft.CodeAnalysis.CSharp.dll и подключен к моему проекту.

[ProtoContract]
public class FunctionAnnotation : 
{
     [ProtoMember(1)] public IMethodSymbol Symbol { get; set; }
}

IMethodSymbol описан в Microsoft.CodeAnalysis.CSharp.dll. Я использую protobuf-net. При попытке сериализовать объект он бросает исключение:

No serializer defined for type: Microsoft.CodeAnalysis.IMetnodSymbol.

Понятно, что Microsoft.CodeAnalysis.IMetnodSymbol не помечен как [ProtoContract].

private void Serialization()
{
     string folderName = @"f:/serialization/";
     Directory.CreateDirectory(folderName);
     int name = this.Symbol.ToString().GetHashCode();
     using (FileStream fs = new FileStream("f:/serialization/" + name + ".dat", FileMode.OpenOrCreate))
     {
          Serializer.Serialize(fs, this);
     }
}

Как решить эту проблему? Есть ли варианты не вручную помечать классы?
  • Вопрос задан
  • 276 просмотров
Пригласить эксперта
Ответы на вопрос 1
@MonkAlex
C#, SQL, Delphi, C++ etc
Можно попробовать создать у себя наследника нужного класса и работать с ним, но я подозреваю у protobuf есть решения получше. Гуглить не пробовали?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы