У меня есть проект, который пользователь может разработать для него плагин.В своих плагинах они должны расширять абстрактный базовый класс.В ядре моего проекта загружайте плагины (dll) динамически и добавляйте новые классы.
базовый класс в ядре кода:
[ProtoContract]
public abstract class BaseOutput
{
public string OutputName {get;}
[ProtoMember(1)]
public int X { get; set; }
}
образец плагина (в другом проекте):
[ProtoContract]
public class MyOutput : BaseOutput
{
public override OutputName { get { return "MyOutput";} }
[ProtoMember(11)]
public double A { get; set; }
[ProtoMember(12)]
public double B { get; set; }
[ProtoMember(13)]
public double C { get; set; }
}
Я знаю, что поверх BaseOutput я должен добавить [ProtoInclude (10, typeof (MyOutput))]], но когда я разрабатываю ядро своего приложения, не знаю плагинов, которые пользователь будет добавлять в программу.Но я хочу можно сериализовать все классы, расширить BaseOutput с помощью protobuf. * 1009 *
Какое решение?