我有一个字典来将某种类型映射到该类型的某个通用对象.例如:
typeof(LoginMessage) maps to MessageProcessor<LoginMessage>
Run Code Online (Sandbox Code Playgroud)
现在问题是在运行时从Dictionary中检索这个通用对象.或者更具体:将检索到的对象强制转换为特定的泛型类型.
我需要它来做这样的事情:
Type key = message.GetType();
MessageProcessor<key> processor = messageProcessors[key] as MessageProcessor<key>;
Run Code Online (Sandbox Code Playgroud)
希望有一个简单的解决方案.
编辑:我不想使用Ifs和开关.由于性能问题,我也不能使用某种反射.
首先,我对标题感到抱歉,我不知道如何准确描述我的问题.我希望通过代码更好地解释.
public abstract class AB {
public MyModel Model;
}
public class A : AB {
public A() {
Model = new MyModelA();
}
public void AMethod() {
var model = (MyModelA) model; // I have to do this all place
}
public void AnotherMethod() {
var model = (MyModelA) model; // same here
model.NewInt = 123;
}
}
public abstract class MyModel {
}
public class MyModelA : MyModel {
// new properties
public int NewInt {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
看看代码,为了使用派生类的新属性,我必须做一个演员,但是当我必须在同一时间使用它时它很难看. …