ClassA
,ClassB
,ClassC
和ClassD
都實現IMyClass
接口。如何獲取對象的類型,並把它作爲在C#中的參數
myObj
是其中一個類的實例。
private void setObj<T>()
{
myObj = mycollection.Single(w => w is T);
}
public void Switch()
{
if(myObj is ClassA)
{
setObj<ClassA>();
}
else if(myObj is ClassB)
{
setObj<ClassB>();
}
else if(myObj is ClassC)
{
setObj<ClassC>();
}
else if(myObj is ClassD)
{
setObj<ClassD>();
}
}
我們如何重構Switch
方法,讓我有這樣的事情:
public void Switch()
{
// How can we know from `myObj`, which class it is and rewrite
// the whole Switch method like this
// X = `ClassA`, `ClassB`, `ClassC` or `ClassD`
setObj<X>();
}
讓我確認我正確地理解了這個問題:您確定調用Switch方法作爲泛型,傳入的類型是?那麼,'Switch()'可以接受嗎?如果是這樣,你的重構建議應該工作得很好。我錯過了什麼? –
CoolBots