런타임에 반환 형식이 결정되는 함수를 만들려고합니다. 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