![](/img/trans.png)
[英]Register a generic Validator using FluentValidation and Autofac
[英]Generic FluentValidation Validator with a generic enum
我一直在試驗泛型,並嘗試使用泛型枚舉編寫泛型驗證器。
設置如下:
我有一個界面:
public interface IHasProperties<TEnum> where TEnum : struct, Enum
{
public IEnumerable<TEnum>? Properties { get; set; }
}
以下型號:
public class Model<T>
{
public IEnumerable<T> ModelWithProperties { get; set; }
}
public class ModelWithProperties : IHasProperties<Properties>
{
public IEnumerable<Properties> Properties { get; set; }
}
一個枚舉:
public enum Properties
{
prop1,
prop2,
prop3
}
有了這個,我想創建一個通用的“屬性”驗證器:
public class ModelPropertiesValidator<T, TEnum> : AbstractValidator<T> where T : IHasProperties<TEnum> where TEnum : struct, Enum
{
public ModelPropertiesValidator()
{
RuleFor(x => x.Properties).NotEmpty();
}
}
但是當我想使用它時:
var validator = new ModelPropertiesValidator<模型,屬性>();
彈出以下錯誤:
類型“Project.Models.Model<Project.Models.ModelWithProperties>”不能用作泛型類型或方法“ModelPropertiesValidator<T, TEnum>”中的類型參數“T”。 沒有從“Project.Models.Model<Project.Models.ModelWithProperties>”到“Project.Contracts.IHasProperties<Project.Types.Properties>”的隱式引用轉換。
這樣的事情可能嗎?
您應該將代碼更改為:
var validator = new ModelPropertiesValidator<ModelWithProperties, Properties>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.