繁体   English   中英

访问动态创建的子类的属性(强类型化)

[英]Accessing properties of dynamically created subclass (strongly typed)

这似乎是一种可能会经常出现的模式,所以我认为也许SO上的某个人知道如何完成此操作。 假设我有三节课:

class Class1 {
    string A { get; set; }
}
class Class2 : Class1 {
    string B { get; set; }
}
class Class3 : Class1 {
    string C { get; set; }
}

和一个字符串: x = "Namespace.Class2";

目标是库代码实例化x给定给客户端的类型给定的实例。 然后,客户端访问Class2的强类型属性,如下所示:

Class2 test = CreateTheObject();
test.B = "bad wolf";
test.A = "super";

您是对的,我们可以反映这些属性,但是现在不再强类型化。 用户可以执行GetProperty(Class2,“ SomePropertyThatDoesntExist”)。 最终可能会引发运行时异常,但这是糟糕的用户体验。 不过,这是我现在正在编码的解决方案,因为我不知道该怎么做我想做的事情。

无论如何,还是要问一个问题:任何想法如何实现?

如果所讨论的类型在编译类型中未知,则不能强类型化。 而且,如果您在编译时知道类型,则可以将其赋值或强制转换为该类型。

您可以使用dynamic关键字执行所需的操作。 但是,由于类型在编译时未知,因此,如果使用的其他类型没有相关属性,则可能会导致运行时错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM