1

我正在编写一个 powershell 脚本,它将从我的 GlobalSuppressions.cs 文件中删除多余的条目。我想使用的技术之一是检查条目引用的类和方法是否存在。抑制条目看起来像这样

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("...", "...", Scope = "member", Target = "MyNamespace.Myclass#MyMethod(Namespace.ParameterType1,... Namespace.ParameterTypeN)...

我可以从中提取类的完全限定名和方法签名。我可以从 powershell 加载 dll。但我不知道如何问“这个类存在吗?” 并且“如果有,它是否包含具有此确切签名的方法?” 我想这可以通过反思以某种方式实现,但到目前为止我不知道如何。我还有一个额外的限制,如果可能的话,我需要在不实例化类的情况下执行检查。这个脚本需要是通用的,它将在许多项目上运行。不知道将检查哪些类,它们的默认构造函数将执行什么代码,或者它们是否甚至有一个没有参数的默认构造函数。哦,如果你知道 C# 中的解决方案,请分享它,我很有可能将它翻译成 powershell。

4

1 回答 1

2

I'm not sure I fully understand your question but if you already have the assembly, GetTypes will list all types (public and private) contained in the assembly.

$assembly = [System.Reflection.Assembly]::LoadWithPartialName("System.Xml")
$assembly.GetTypes() | where-object { $_.name -eq "XmlNode" }

You can then call GetMembers or GetMethods to list the members/methods for a given type.

See http://msdn.microsoft.com/en-us/library/System.Type_methods.aspx for the detailed API.

于 2013-08-23T16:20:08.740 回答