閱讀this,我知道有可能允許一種方法通過使其成爲通用方法來接受多種類型的參數。在該示例中,以下代碼與類型約束一起使用以確保「U」是IEnumerable<T>
。通用方法多(OR)類型約束
public T DoSomething<U, T>(U arg) where U : IEnumerable<T>
{
return arg.First();
}
我發現一些這使得添加多個類型約束,如更多的代碼:
public void test<T>(string a, T arg) where T: ParentClass, ChildClass
{
//do something
}
然而,這種代碼出現強制實施該arg
必須既是一個類型的ParentClass
和ChildClass
。我想要做的是說,ARG可能是一個類型的ParentClass
或ChildClass
以下方式:
public void test<T>(string a, T arg) where T: string OR Exception
{
//do something
}
您的幫助表示讚賞一如既往!
在這種方法的主體內,你能做些什麼*以一種通用的方式*(除非多個類型都來自特定的基類,在這種情況下爲什麼不把它聲明爲類型約束)? –
@Damien_The_Unbeliever不確定你在體內是什麼意思?除非你的意思是允許任何類型和手動檢查身體......並在我想寫的實際代碼中(最後一段代碼片段),我希望能夠傳遞一個字符串或異常,所以沒有類關係那裏(除了system.object我想象)。 – Mansfield
另請注意,在'where T:string''中,'string'是**密封的**類沒有用處。你可以做的唯一有用的事情是爲'string'和'T:Exception'定義重載,正如@ Botz3000在他的回答中所解釋的。 –