我有以下的接口定義的接口:在列表中選擇項目匹配
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