我有以下的接口定义的接口:在列表中选择项目匹配
public interface IStep
{
string Name { get; set; }
}
public interface IStepBuildDataSet : IStep
{
DataSet Data { get; set; }
}
public interface IStepBuildFile : IStep
{
byte File { get; set; }
}
我有一个使用这些接口代码:
public List<IStep> Steps { get; set; }
public void RunJob()
{
// pseudo code, need to update:
IStepBuildDataSet buildDataSet = Steps.Single(s => s is IStepBuildDataSet);
IStepBuildFile buildFile = Steps.Single(s => s is IStepBuildFile);
// call methods on Steps
}
什么是正确的语法来取代伪码?我想在实现certian接口的列表中找到步骤。列表中只会有一个。
该代码是正确的,你只需要强制转换结果:'Steps.Single(S => s是IStepBuildDataSet)作为IStepBuildDataSet' – 2014-09-04 23:16:54
有道理,它返回一个ISTEP。如果您将其作为答案发布,我会将其标记为正确。谢谢。 – Josh 2014-09-04 23:20:17
CSharpie的答案有同样的效果,但LINQier,我会去那个。它有使过滤器更加明确的好处。 – 2014-09-05 00:26:03