【发布时间】:2020-05-13 20:46:40
【问题描述】:
请考虑以下代码。我有一个名为 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?还有其他方法吗?
【问题讨论】:
-
MethodA() as ClassB? -
你到底是什么意思?
-
需要将方法返回的对象大小写为
ClassB。使用(ClassB)MethodA()或MethodA() as ClassB。 -
查看我的答案以了解一些替代方案
标签: c# .net asp.net-core interface polymorphism