本文整理汇总了C#中IFilter.InstrumentClass方法的典型用法代码示例。如果您正苦于以下问题:C# IFilter.InstrumentClass方法的具体用法?C# IFilter.InstrumentClass怎么用?C# IFilter.InstrumentClass使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IFilter
的用法示例。
在下文中一共展示了IFilter.InstrumentClass方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetInstrumentableTypes
private static void GetInstrumentableTypes(IEnumerable<TypeDefinition> typeDefinitions, List<Class> classes, IFilter filter, string moduleName)
{
foreach (var typeDefinition in typeDefinitions)
{
if (typeDefinition.IsEnum) continue;
if (typeDefinition.IsInterface && typeDefinition.IsAbstract) continue;
var @class = new Class() { FullName = typeDefinition.FullName };
if (!filter.InstrumentClass(moduleName, @class.FullName))
{
@class.SkippedDueTo = SkippedMethod.Filter;
}
else if (filter.ExcludeByAttribute(typeDefinition))
{
@class.SkippedDueTo = SkippedMethod.Attribute;
}
var list = new List<string>();
if ([email protected]())
{
foreach (var methodDefinition in typeDefinition.Methods)
{
if (methodDefinition.Body != null && methodDefinition.Body.Instructions != null)
{
foreach (var instruction in methodDefinition.Body.Instructions)
{
if (instruction.SequencePoint != null)
{
list.Add(instruction.SequencePoint.Document.Url);
break;
}
}
}
}
}
// only instrument types that are not structs and have instrumentable points
if (!typeDefinition.IsValueType || list.Count > 0)
{
@class.Files = list.Distinct().Select(file => new File { FullPath = file }).ToArray();
classes.Add(@class);
}
if (typeDefinition.HasNestedTypes)
GetInstrumentableTypes(typeDefinition.NestedTypes, classes, filter, moduleName);
}
}