测试类型是否为属性
本文关键字:属性 是否 类型 测试类 测试 | 更新日期: 2023-09-27 18:23:40
我得到了以下代码:
var library = Assembly.LoadFrom(libraryPath);
var namespaces = library.GetTypes().GroupBy(t => t.Namespace);
foreach (var typesInNamespace in namespaces)
{
foreach (var type in typesInNamespace)
{
[...]
}
}
但是,当我想测试当前类型是否是具有以下代码的属性时:
var attributes = typesInNamespace.Where(t => t is System.Attribute);
或
if (type is System.Attribute)
它们都失败了,我有以下警告:
The given expression is never of the provided ('System.Attribute') type
类的定义如下:
class ImportableModelAttribute : Attribute
{
}
class ImportableAttribute : Attribute
{
}
老实说,我希望有一种API来处理Attributes(类似于if (type.IsAtteribute)
),但我什么也没找到,这就是我尝试用这种方式的原因!
Type
本身从来都不是属性(就像typeof(string)
不是字符串一样),但我怀疑您想要:
if (typeof(Attribute).IsAssignableFrom(type))
(当然,也可以把它放在lambda表达式中。)
有关详细信息,请参阅Type.IsAssignableFrom
的文档。