2013-05-18 87 views
2

我在項目中有一個成員類。我在Visual Studio中使用包管理器控制檯上的powershell來找到這個類。如何確定類型是否實現Powershell中的接口

public class Member : ICacheable 
{ 
    public string FirstName; 
    public string LastName; 
    ... 
} 

它打印如下所示。如何檢查這個類是否可以分配給ICacheable。 Actaully我試圖找到所有實現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 

UPDATE(解決方案)

注:$ 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   : 

回答

4

我不知道的東西在包管理器控制檯是如何工作的,但在PowerShell中,如果編譯(和加載)類型實現使用implementedinterfaces屬性界面,您可以檢查。防爆。與array型:

#[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 
+0

我檢查,這也適用包管理器控制檯上。這給了我想法。然後我應該得到類型以實現ImplementedInterfaces屬性。我正在尋找它。 –

+1

你給了我這個想法,然後我找到了解決方案。我添加了解決問題的方法。謝謝。 –

相關問題