我正在试图创建一个函数,其中返回类型是在运行时确定的。我知道我只能返回一个object
或dynamic
,但我的目标是返回键入的object
,并被编译器和InteliSense识别。在函数中动态创建或设置函数的返回类型
我知道我可以在返回后投下我的object
,这对于实现这件事是最容易的事情,但那不仅仅是编程精神。
这里是什么,我想创建
注意一个例子:我其实不愿意按钮和网格......这还只是针对这个例子。
Type T;
public T Question(bool aBool)
{
if (aBool)
{
T = typeof(Button);
return new Button();
}
else
{
T = typeof(Grid);
return new Grid();
}
}
现在,这显然不起作用,我明白为什么。但是我想知道是否有人有办法工作,或者如果这对于C#的当前状态是不可能的。
编辑:对评论的回应......我明白这看起来像是“魔术”,我明白编译器必须弄清楚我的结果是如何工作的。编译器/ Intellisense/Visual Studio已经为许多其他事情做到了这一点。虽然这些东西可能很简单,例如检测不可达代码或绘制可视化预览。如果这是一个实现的功能,我很好奇。
不清楚你想达到的目标。它感觉你希望编译器通过预测未来一段时间的代码执行结果来实现魔法:“返回类型在运行时确定......由编译器识别”。 –
直到运行时才解析,编译器如何确定inteliSense的类型?这只是没有意义。 –
即使使用泛型,编译器仍然需要能够在编译时确定类型。这听起来像是你在这里有一个糟糕的抽象,也许如果我们知道你正在试图解决什么问题,我们可以建议一个更好的行动...... – David