```csharp title="C#" using Kreuzberg; var validator = new ContentTypeValidator("application/pdf", "text/plain"); ValidatorRegistry.Register(validator); public class ContentTypeValidator : IValidator { private readonly string[] _allowedMimeTypes; public ContentTypeValidator(params string[] allowedMimeTypes) { _allowedMimeTypes = allowedMimeTypes; } public string Name => "content-type-validator"; public string Version => "1.0.0"; public void Initialize() { Console.WriteLine($"Content type validator initialized with types: {string.Join(", ", _allowedMimeTypes)}"); } public void Shutdown() { Console.WriteLine("Content type validator shut down"); } public void Validate(ExtractionResult result, ExtractionConfig config) { if (!_allowedMimeTypes.Contains(result.MimeType)) { throw new KreuzbergException( $"MIME type {result.MimeType} not allowed. Allowed types: {string.Join(", ", _allowedMimeTypes)}", 1002 ); } } public bool ShouldValidate(ExtractionResult result, ExtractionConfig config) { return true; } public int Priority() { return 50; } } ```