如何确定类型是否实现了Powershell中的接口
本文关键字:Powershell 接口 实现 何确定 类型 是否 | 更新日期: 2023-09-27 18:14:23
我在项目中有一个Member类。我在Visual Studio的包管理器控制台上使用powershell找到了这个类。
public class Member : ICacheable
{
public string FirstName;
public string LastName;
...
}
打印如下所示。如何检查这个类是否可分配给ICacheable。实际上,我试图找到所有的类实现ICacheable,但我找不到任何属性,将帮助我找到这个。
IsDirty : False
FileCount : 1
Name : Member.cs
Collection : System.__ComObject
Properties : System.__ComObject
DTE : System.__ComObject
Kind : {6BB5F8EE-4483-11D3-8BCF-00C04F8EC28C}
ProjectItems : System.__ComObject
Object : System.__ComObject
ExtenderNames : {}
ExtenderCATID : {610D4615-D0D5-11D2-8599-006097C68E81}
Saved : True
ConfigurationManager :
FileCodeModel : System.__ComObject
Document : System.__ComObject
SubProject :
ContainingProject : System.__ComObject
更新(解决方案)
注意:$memberItem是一个投影项,我在上面展示过。
$memberItem.FileCodeModel.CodeElements | % { $_.Children | % { $_.ImplementedInterfaces } }
DTE : System.__ComObject
Collection : System.__ComObject
Name : ICacheable
FullName : ApplicationBase.Core.Interface.ICacheable
ProjectItem :
Kind : 8
IsCodeType : True
InfoLocation : 2
Children :
Language : {B5E9BD34-6D3E-4B5D-925E-8A43B79820B4}
StartPoint :
EndPoint :
ExtenderNames : {ExternalLocation}
ExtenderCATID :
Parent : System.__ComObject
Namespace : System.__ComObject
Bases : System.__ComObject
Members : System.__ComObject
Access : 1
Attributes : System.__ComObject
DocComment :
Comment :
DerivedTypes :
IsGeneric : False
DataTypeKind : 1
Parts :
我不确定包管理器控制台是如何工作的,但在powershell中,您可以检查编译(和加载)类型是否使用implementedinterfaces
属性实现接口。示例:与array
-type:
#[array].ImplementedInterfaces.Contains([System.Collections.ICollection])
[array].ImplementedInterfaces.Contains([type]"System.Collections.Icollection")
True
你可以看到所有实现的接口:
[array].ImplementedInterfaces
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False ICloneable
True False IList
True False ICollection
True False IEnumerable
True False IStructuralComparable
True False IStructuralEquatable