C# 将system.Type转换为用户定义的类型
我试图让所有的类继承一个基类C# 将system.Type转换为用户定义的类型,c#,.net,system.reflection,C#,.net,System.reflection,我试图让所有的类继承一个基类 public void GetClassNames() { List<BaseClass> data = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(assembly => assembly.GetTypes()) .Where(type => type !
public void GetClassNames()
{
List<BaseClass> data = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(assembly => assembly.GetTypes())
.Where(type => type != null &&
type.IsSubclassOf(typeof(BaseClass))).ToList();
}
public void GetClassNames()
{
列表数据=AppDomain.CurrentDomain.GetAssemblys()
.SelectMany(assembly=>assembly.GetTypes())
.Where(type=>type!=null&&
type.IsSubclassOf(typeof(BaseClass)).ToList();
}
但是,上面的代码会抛出一个错误。“无法将类型
System.Collections.Generic.List'隐式转换为System.Collections.Generic.List”
如何将其强制转换为类型基类?您正在选择属于基类的子类的所有程序集的所有类型。因此,您可以得到所有类型,但不能得到这些类型的实例
你到底想要什么?方法名为GetClassNames
,因此您可能需要:
public IEnumnerable<string> GetClassNames()
{
List<string> baseClassNames = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(assembly => assembly.GetTypes())
.Where(type => type?.IsSubclassOf(typeof(BaseClass)) == true)
.Select(type => type.FullName)
.ToList();
return baseClassNames;
}
您正在选择属于基类的子类的所有程序集的所有类型。因此,您可以得到所有类型,但不能得到这些类型的实例
你到底想要什么?方法名为GetClassNames
,因此您可能需要:
public IEnumnerable<string> GetClassNames()
{
List<string> baseClassNames = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(assembly => assembly.GetTypes())
.Where(type => type?.IsSubclassOf(typeof(BaseClass)) == true)
.Select(type => type.FullName)
.ToList();
return baseClassNames;
}
System.Type
是包含类型元数据的类型描述符。它不包含关于所描述类型的任何特定实例的数据。列表
(是汇编.GetType()
的结果)是包含此类描述符的列表,而列表
是包含基类
(或其子类型)的具体实例的列表。您应该指定您真正想要完成的任务,否则我们只能猜测。System.Type
是一个类型描述符,它包含有关类型的元数据。它不包含关于所描述类型的任何特定实例的数据。列表
(是汇编.GetType()
的结果)是包含此类描述符的列表,而列表
是包含基类
(或其子类型)的具体实例的列表。你应该详细说明你真正想要完成什么,否则我们只能猜测。如果我的描述有点误导的话,很抱歉。我想获取从基类型派生的所有类型。如果我的描述有点误导,很抱歉。我希望获得从基类型派生的所有类型。