基本上我有每個對象有可能實現一組不同的接口的對象列表過濾:列表使用多類/接口
List<BaseObject> objects;
class BaseObject
{
public void DoStuff();
}
interface IX
{
void DoX();
}
interface IY
{
void DoY();
}
interface IZ
{
void DoZ();
}
,我想寫點東西像這樣:
foreach(var obj in objects.OfType<BaseObject and IX>)
{
obj.DoStuff();
obj.DoX();
}
(例如我爲BaseObject和IX類型的對象執行特定算法,而不必在那裏進行類型轉換)
是否可以在C#中執行? 什麼是最優雅的解決方案?
我可以這樣做:
foreach(var obj in objects.OfType<IX>)
{
var baseobj = (BaseObject)obj.DoStuff();
obj.DoX();
}
,但我覺得它難看。
而且我可能需要將特定操作應用於實現說接口IX和接口IZ的類型。
foreach(var obj in objects.OfType<BaseType and IX and IZ>)
{
obj.DoStuff();
obj.DoX();
obj.DoZ();
}
我想我會失去intellisense,但它看起來很酷! – JBeurer
@JBeurer,是的,這是一個折衷:) –