gpt4 book ai didi

c# - 为什么在 web api 方法中返回接口(interface)时,我得到的是具有接口(interface)值的继承类的值?

转载 作者:太空狗 更新时间:2023-10-29 21:22:41 26 4
gpt4 key购买 nike

我有一个继承自 Interface 的类,我正在从我的 web api get methed 返回接口(interface),问题是我正在获取继承类的值作为 json 字符串。

这是界面

 public interface IFoo
{
string A { get ;set ; }
string B { get ; set ; }
}

继承类

 public class Child : iFoo
{
string A { get ; set ; }
string B { get ; set ; }
string C { get ; set ; }
string D { get ; set ; }
}

然后我从 Controller 的 GetMethod 返回 IFoo

 public IFoo GetIFoo()
{
return ChildInstance ;
}

当前结果为我提供了继承类和接口(interface)的所有值,但我只想要在 json 结果中的接口(interface)中实现的值。

最佳答案

当它到达 Json 序列化器时,它不关心方法的返回类型是什么。它只知道“我有这个对象,让我们看看我能用它做什么”。

如果您希望序列化器只包含您的接口(interface)所具有的属性,您最好给它一个只具有您的接口(interface)所具有的属性的对象。您可能会考虑使用例如Automapper 将值从 ChildInstance 复制到这个新对象。

替代方案更复杂 - 实现您自己的序列化程序,这样 Json 序列化程序就没有机会参与。

关于c# - 为什么在 web api 方法中返回接口(interface)时,我得到的是具有接口(interface)值的继承类的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19652862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com