C# 如何访问已实现的接口(interface)中不存在的对象属性

标签 c# .net asp.net-core interface polymorphism

请考虑以下代码。我有一个名为 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/

相关文章:

c# - ASP.NET 中的 Ajax 自动完成文本框在母版页中不起作用

c# - 将 JSON 对象反序列化为类

c# - 结构图 IContainer 实现

.net - 带有嵌套聚合的Elasticsearch NEST客户端

asp.net-core - ASP.NET Core 2.x OnConfiguring 从 appsettings.json 获取连接字符串

c# - net.core/asp.net identity/openid connect 关联失败

c# - File.WriteAllBytes 或 FileStream.Write

c# - "Writable"对象引用

.net - 在 Visual Studio 2013 中打开数据库架构

c# - HttpClientFactory BadRequest?