Bạn có thể sử dụng PostSharp hoặc khung AOP khác để tạo ra khía cạnh đó sẽ được áp dụng với các loại ExcludeFromCodeCoverageAttribute
hoặc không gian tên được chỉ định:
[Serializable]
[AttributeUsage(AttributeTargets.Assembly)]
[MulticastAttributeUsage(MulticastTargets.Class | MulticastTargets.Struct)]
[ProvideAspectRole(StandardRoles.PerformanceInstrumentation)]
public sealed class DisableCoverageAttribute : TypeLevelAspect, IAspectProvider
{
public IEnumerable<AspectInstance> ProvideAspects(object targetElement)
{
Type disabledType = (Type)targetElement;
var introducedExclusion = new CustomAttributeIntroductionAspect(
new ObjectConstruction(typeof (ExcludeFromCodeCoverageAttribute)));
return new[] {new AspectInstance(disabledType, introducedExclusion)};
}
}
Sau đó chỉ cần áp dụng khía cạnh này để lắp ráp và cung cấp không gian tên mà bạn muốn loại trừ. Trong biên soạn PostSharp sẽ thêm ExcludeFromCodeCoverageAttribute
đến mọi tầng lớp trong My.AutogeneratedCode
namespace:
[assembly: DisableCoverage(AttributeTargetTypes="My.AutogeneratedCode.*")]
Mẫu mã và giải thích bạn có thể tìm here.
Nguồn
2012-06-26 08:57:44
Bạn có thể tạo lớp được tạo tự động đi kèm với 'một phần' (giống như, thay đổi trình tạo theo cách nào đó) không? –