2
は私が2つのリストを作成し、各リストに各値をキャストし、リストを結合する複雑なLINQクエリ?
public interface FBBase { }
public interface IFoo : FBBase { }
public interface IBar : FBBase { }
私も両方IFoo
のList
とIBar
public class FBUser
{
public List<IFoo> foos { get; set; }
public List<IBar> bars { get; set; }
}
を保持しているクラスと、これらのインタフェースを実装するいくつかのクラスを持っている私のアプリケーションでは3つのインターフェースを持っている
public class Fee : IFoo { }
public class Baz : IBar { }
public class PhiBat : IFoo, IBar { }
別のクラスでは、私はでいくつかの仕事をしています10個のオブジェクト。私は、FBUser.foos
とFBUser.bars
の各固有の参照を含むList<IFBBase>
を収集したいと思います。さらにList<IFBBase>
から特定のType
を除外したいと思います。
これよりもクリーンな方法がありますか?これは正しい方法ですか?
public class FBUserWorker
{
List<Type> discludeTypes { get; set; } = new List<Type>();
public FBUserWorker()
{
discludeTypes.Add(typeof(PhiBat));
}
public void DoWork(FBUser userObj)
{
var fbBaseList = userObj.foos.Where(x => !discludeTypes.Contains(x.GetType())).Cast<IFBBase>().ToList();
fbBaseList.AddRange(userObj.bars.Where(x => !discludeTypes.Contains(x.GetType())).Cast<IFBBase>().ToList());
fbBaseList = fbBaseList.Distinct().ToList();
}
}