请考虑以下代码。我有一个名为 IClass 的接口(interface)。
public interface IClass
{
public string MyProperty { get; set; }
}
我有两个实现此接口(interface)的类:
public class ClassA : IClass
{
public string MyProperty { get; set; }
}
public class ClassB : IClass
{
public string MyProperty { get; set; }
public string MyProperty2 { get; set; }
}
最后我有一个返回 IClass 接口(interface)的方法:
public static IClass MethodA()
{
return new ClassB { MyProperty = "A", MyProperty2 = "B" };
}
我的问题是我无法从 MethodA 访问 MyProperty2
static void Main(string[] args)
{
Console.WriteLine(JsonSerializer.Serialize(MethodA()));
}
它只返回 {"MyProperty":"A"}
我如何在不使用多态模型绑定(bind)的情况下实际获取 MyProperty2?还有其他方法吗?
最佳答案
你需要转换
Console.WriteLine(JsonSerializer.Serialize((ClassB) MethodA()))
但是,这样做就违背了使用界面的初衷。
关于C# 如何访问已实现的接口(interface)中不存在的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61784531/