这似乎是一种可能经常出现的模式,所以我想也许有人知道这是怎么做的。假设我有三个类:
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”)。它最终可能会引发运行时异常,但这是一种糟糕的用户体验。这是我现在正在编码的解决方案,因为我无法弄清楚如何做我想做的事。
无论如何,关于这个问题:不知道如何做到这一点?
答案 0 :(得分:1)
如果有问题的类型在编译类型中未知,则不能强类型化。如果你在编译时知道类型,你可以只分配或转换为该类型。
您可以使用dynamic
关键字来执行您想要的操作。但是,由于在编译时不知道该类型,如果使用的某些其他类型没有相关属性,则会冒运行时错误。