基本 我有一个物体清单,每个物体可使用一套不同的界面:
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();
}
(E.g. i. 对基地物体和九类物体进行特定算法,而不必在那里进行分类)
Is it possible to do in C#? What s the most elegant solution?
我可以这样做:
foreach(var obj in objects.OfType<IX>)
{
var baseobj = (BaseObject)obj.DoStuff();
obj.DoX();
}
但是,我发现这是很荒谬的。
而且,我可能需要将具体业务应用到实施第九章接口和界面的作业类型。
foreach(var obj in objects.OfType<BaseType and IX and IZ>)
{
obj.DoStuff();
obj.DoX();
obj.DoZ();
}