[英]Dynamic check of derived class type in Linq C#
我有一個Platform類作為基類,還有另外2個從Platform派生的IOSPlatform和AndroidPlatform類。
除此之外,還有一個Device類,該類具有Platform對象作為導航屬性。
查詢所有IOS平台設備時,下面的linq表達式就像一個超級按鈕一樣工作。
devices.Where(t=> t.Platform is IOSPlatform)
我想通過使其動態檢查類類型來改進此查詢:
Platform p = new IOSPlatform();
devices.Where(t=> t.Platform is /*derived class of p object*/)
有沒有辦法做到這一點 ?
最好的祝福,
凱末爾
Platform p = new IOSPlatform();
devices.Where(t=> t.Platform.GetType()==p.GetType())
關於什么:
Platform p = new IOSPlatform();
devices.Where(t=> t.Platform.GetType().BaseType == p.GetType());
我不確定我是否了解,但這聽起來像您想要的
devices.Where(t =>
p.GetType().IsAssignableFrom(t.Platform.GetType())
);
您是否要驗證列表中的對象是否繼承自Platform? “ is”運算符已經驗證了..您可以使用以下代碼:
devices.Where(d => d.Platform is Platform);
甚至使用OfType方法:
devices.OfType<IOSPlatform>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.