Вы можете использовать статический метод, который будет возвращать известные типы:
[DataContract]
[KnownType("GetKnownType")]
public class MyBaseClass
{
//some properties
private static Type[] GetKnownType()
{
return KnownTypesHelper.GetKnownTypes<MyBaseClass>();
}
}
Теперь создайте статический класс KnownTypesHelper, который будет возвращать массив известных типов (сканируя сборки, чтобы найти, например, реализации базового класса ...)