title: Generic FluentValidation Validator with a generic enum
body: <p>I have been experimenting with generics and tried writing a generic validator using a generic enum.</p>
  <p>The setup is as following:</p>
  <p>I have an interface:</p>
  <pre><code>public interface IHasProperties&lt;TEnum&gt; where TEnum : struct, Enum
  {
      public IEnumerable&lt;TEnum&gt;? Properties { get; set; }
  }
  </code></pre>
  <p>The following models:</p>
  <pre><code>public class Model&lt;T&gt;
  {
      public IEnumerable&lt;T&gt; ModelWithProperties { get; set; }
  }
  
  public class ModelWithProperties : IHasProperties&lt;Properties&gt;
  {
      public IEnumerable&lt;Properties&gt; Properties { get; set; }
  }
  </code></pre>
  <p>An enum:</p>
  <pre><code>public enum Properties
  {
      prop1,
      prop2,
      prop3
  }
  </code></pre>
  <p>With this I want to create a generic 'properties' validator:</p>
  <pre><code>public class ModelPropertiesValidator&lt;T, TEnum&gt; : AbstractValidator&lt;T&gt; where T : IHasProperties&lt;TEnum&gt; where TEnum : struct, Enum
  {
      public ModelPropertiesValidator()
      {
          RuleFor(x =&gt; x.Properties).NotEmpty();
      }
  }
  </code></pre>
  <p>But when I want to use it:</p>
  <p>var validator = new ModelPropertiesValidator&lt;Model, Properties&gt;();</p>
  <p>The following error pops up:</p>
  <p><strong>The type 'Project.Models.Model&lt;Project.Models.ModelWithProperties&gt;' cannot be used as type parameter 'T' in the generic type or method 'ModelPropertiesValidator&lt;T, TEnum&gt;'. There is no implicit reference conversion from 'Project.Models.Model&lt;Project.Models.ModelWithProperties&gt;' to 'Project.Contracts.IHasProperties&lt;Project.Types.Properties&gt;'.</strong></p>
  <p>Is something like this possible?</p>