Используйте DTO для нужных вам свойств и сериализуйте их.
DTO обозначает объект передачи данных. Он содержит данные, которые вы хотите передать, и без логики c.
Например, добавьте такой класс:
class MyCustomClassDto
{
public double X {get;set;}
public double Y {get;set;}
}
Так что вместо попытки сериализации вашего пользовательского класса напрямую, вы бы инициализируйте экземпляр этого значениями X и Y и сериализуйте его.
Затем в своем основном классе вы можете добавить это:
public MyCustomClassDto GetData()
{
return new MyCustomerClassDto{X = X, Y = Y};
}
Вы также можете добавить метод сериализации в свой DTO .
В качестве альтернативы вы можете использовать инструмент отображения, такой как Autopper - который подойдет, если у вас есть много DTO или соответствующих объектов в разных слоях.
Надеюсь, что прояснит идею. Не вижу других способов расширения, не видя больше деталей / контекста.
Правильный подход mvvm itemspanel в комментарии к вопросу является предпочтительным, но это может потребовать существенного переписывания в зависимости от существующей кодовой базы. Возможно, вы захотите рассмотреть экономическое обоснование для такого рефакторинга imo, учитывая усилия, направленные против того, сколько еще может быть построено поверх него.