私は C# の Generics や Generics Constraint などに精通していますが、少なくともこれを見るまではそう思っていました。Fluent Validation Library でこのインターフェイスを見ていましたが、このコード行は何を意味するのでしょうか?
public interface IValidator<in T> : IValidator, IEnumerable<IValidationRule>, IEnumerable
特に<in T>
コードのスニペット。
参照用の完全なインターフェイスを次に示します。( http://fluentvalidation.codeplex.com/SourceControl/latest#src/FluentValidation/IValidator.cs )
#region
Assembly FluentValidation.dll, v4.0.30319
#endregion
using FluentValidation.Results;
using System.Collections;
using System.Collections.Generic;
namespace FluentValidation
{
// Summary:
// Defines a validator for a particualr type.
//
// Type parameters:
// T:
public interface IValidator<in T> : IValidator, IEnumerable<IValidationRule>, IEnumerable
{
// Summary:
// Sets the cascade mode for all rules within this validator.
CascadeMode CascadeMode { get; set; }
// Summary:
// Validates the specified instance.
//
// Parameters:
// instance:
// The instance to validate
//
// Returns:
// A ValidationResult object containing any validation failures.
ValidationResult Validate(T instance);
}
}