mak*_*chi 0 c# reflection inheritance
我见过很多关于从基本类型获取所有类型等的问题,但这并不是我所需要的。例如,我有一个抽象基类:
public abstract class BasePart
{
//whatever
}
Run Code Online (Sandbox Code Playgroud)
我有很多从它派生的类。喜欢...
public class HorizontalPanel : BasePart { //code }
public class VerticalPanel : BasePart { //code }
public class RainBoard : BasePart { //code }
Run Code Online (Sandbox Code Playgroud)
等等。我总是按基类列出它们:
List<BasePart> parts;
Run Code Online (Sandbox Code Playgroud)
我使用类型转换和泛型来做我想做的事情。然而,我需要过滤这个列表,并且我只想要其中可用的类型信息。并且只有一次用于类型。例如,如果我的列表有三个 HorizontalPanels 和两个 VerticalPanels,我想要从中得到的是List<Type>仅包含{HorizontalPanel, VerticalPanel}. 我想我可以在链式循环中摆弄对象本身以获得我想要的东西,但我确信 C# 有更好的方法来做到这一点。任何人?
没有语言功能可以帮助您完成此操作。最简单的方法是使用 LINQ,首先使用Select获取所有类型并使用Distinct
parts.Select(x => x.GetType()).Distinct();
Run Code Online (Sandbox Code Playgroud)