我从已加载的程序集中读取类型:
var someType = loadedAssemblies
.Where(a => a != null && a.FullName.StartsWith("MY."))
.SelectMany(a => a.GetTypes())
.Distinct()
.ToArray()[0];
类型名称是" AddressesRevisionContainerId"。
现在我有这2个课程:
public class RevisionContainer {
public RevisionContainer(RevisionContainerId revisionContainerId)
{
this.RevisionContainerId = revisionContainerId;
}
public virtual RevisionContainerId RevisionContainerId { get; private set;}
}
public class AddressesRevisionContainerId : RevisionContainerId
{}
如果你有someType,你怎么能找到包含这种类型的所有类? 例如,我如何找到类型" SomeType"它包含在RevisionContainer类中(可能还有其他类)?
答案 0 :(得分:0)
只需遍历程序集中的类型并检查每种类型,如果它的任何属性类型等于某种类型,或者某些类型是它的子类:
var typesThatHasSomeTypeAsProperty =
assemblies.SelectMany(assembly =>
assembly.GetTypes().Where(type =>
type.GetProperties().Any(property =>
property.PropertyType == someType || someType.IsSubclassOf(property.PropertyType)))).ToList();