我有以下代码:
public class Processor
{
private Query _query =
new SpecificQuery1();
//OR
//new SpecificQuery2();
public void ProcessItem(dynamic dynamicResult)
{
//Can't use intellisense on dynamicResult
var staticResult = dynamicResult as _query.GetSomeType();//Can't do it :(
//Can use intellisense on staticResult
}
}
而且,令人惊讶的是,它没有编译。有什么办法可以将动态转换为var?我知道这听起来很疯狂,但这部分将被大量编辑,如果有人更改了 QueryImplementation,他还必须更改 ProcessItem() 中的类型。我想将步骤数减少到 1 - 只需替换 SpecificQuery() ,类型就会自行更改。
所以让我改写一下。我想知道是否有某种方法可以根据分配给基类 Query 的构造函数在 dynamicResult(或其中的一些强制转换)上使用智能感知。
谢谢
编辑:对不起,我可能问错了。我明白什么是动态和可变的。我不打算在动态上使用智能感知。我并不打算真正将动态转换为 var。
我想说的是,如果我在编译时知道动态将是什么类型(它存储在 Query 实现中 - 它可以是静态的,我想要的任何 const ) - 有什么方法可以使用这些知识在 ProcessItem() 中启用智能感知?