Ниже ОГРОМНОЕ упрощение моего кода:
Код: Выделить всё
var a = new A();
var b = (B)a;
Console.WriteLine(b);
public class A : B
{
public string Name { get; set; } = "Name";
}
public class B
{
public string Test { get; set; } = "Test";
}
Проблема в том, что даже если я приведу экземпляр a к типу B, свойства типа A все равно будут видимы. Это вызывает у меня некоторые проблемы, поскольку такие свойства по-прежнему сериализуются и возвращаются в качестве ответа конечной точки в Postman.
[img]
https://i .sstatic.net/651RAKbB.png[/img]
Вопрос: Как мне привести a к B, чтобы избавиться от свойств типа A?
Я попробовал следующее:
и это, очевидно, работает, но создание совершенно нового объекта не кажется оптимальным решением.
РЕДАКТИРОВАТЬ:
Код: Выделить всё
Console.WriteLine("B: {0}", JsonSerializer.Serialize(b));
Приведенный выше код вернет только свойства из B, но когда я тестировал это в Postman, свойства из A также возвращаются. Кажется, что сериализация по умолчанию, которая выполняется «под капотом» в .NET Web Api, делает нечто большее, чем просто JsonSerializer.Serialize(b), и это приводит к тому, что свойства A также возвращаются в Postman.
Подробнее здесь:
https://stackoverflow.com/questions/792 ... ivate-type