C# 将泛型类型引入从非泛型类继承的构造函数 问题:

C# 将泛型类型引入从非泛型类继承的构造函数 问题:,c#,generics,constructor,C#,Generics,Constructor,在继承自未定义泛型类型的类的类的构造函数中使用泛型是否有解决方法 说明: 我正在创建一个从ValidationAttribute类继承的新自定义属性。我希望在构造函数中使用泛型类型,如下所示: DateValidationAttribute : ValidationAttribute { public void DateValidationAttribute <TData>(Expression<Func<TData, DateTime?>> pro

在继承自未定义泛型类型的类的类的构造函数中使用泛型是否有解决方法


说明: 我正在创建一个从ValidationAttribute类继承的新自定义属性。我希望在构造函数中使用泛型类型,如下所示:

DateValidationAttribute : ValidationAttribute {

   public void DateValidationAttribute <TData>(Expression<Func<TData, DateTime?>> property){ ... }

}


属性中不支持泛型是您的最小问题。属性只能具有特定的,而不能具有lambda。所以,即使你可以使用泛型,你也不能做你想做的事情

考虑使用字符串作为构造函数参数,并使用
nameof()
,例如:

[DateValidation(nameof(ToDate))]

这种方法使名称与不动产名称保持同步,从而在重构等时获得所需的安全性。

你所说的“类的子级”到底是什么意思?还要知道,你不能使构造函数泛型,你必须使类型泛型。你能退一步告诉我们你想要实现什么吗,而不是你试图如何实现它?@Lasse Vågsæther Karlsen我重新修改了问题,以更好地解释你不清楚的点,并添加了我试图实现的目标。你的目标将不起作用,因为可以在属性用法中指定的类型,而
Expression
不是这些类型中的一种。以下是可在属性中使用的类型列表的可能重复项:
Goal:

public DateTime? ToDate { get; set; }

[DateValidation(prop => prop.ToDate)]
public DateTime? FromDate { get; set; }    
[DateValidation(nameof(ToDate))]