请考虑以下代码。我有一个名为IClass的接口。
public interface IClass
{
public string MyProperty { get; set; }
}
而且我有两个实现此接口的类:
public class ClassA : IClass
{
public string MyProperty { get; set; }
}
public class ClassB : IClass
{
public string MyProperty { get; set; }
public string MyProperty2 { get; set; }
}
最后我有一个返回IClass接口的方法:
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"}
我如何在不使用多态模型绑定的情况下实际获得MyProperty2?还有其他方法吗?
您需要投射
Console.WriteLine(JsonSerializer.Serialize((ClassB) MethodA()))
但是,这样做首先违反了使用接口的目的。
可能您将不得不像下面那样显式地检查并投射它
var data = MethodA();
JsonSerializer.Serialize(data is ClassB ? data as ClassB : data as ClassA )