为了在Sql server中有更好的可读性,我把Enum用String来模拟。定义了一个Class来实现:    public abstract class StrEnum<T> : IEquatable<T>
        where T : StrEnum<T>
    {
         ......
         
         public static bool IsValid(string value)
         {
             //如果是合法值就返回true,否则false。
         }
    }
当我想声明一个ENUM的时候,我这样做:public sealed class StrEnumColor : StrEnum<StrEnumColor>
{
   ....
}现在我想写一个函数来判断一个字符串,是不是合法的Enum值,我想用函数模板来表示,这里我想添加一个限制,即类型参数T,都是从StrEnum派生下来的,这样我可以调用基类StrEnum中的IsValid:public bool ValidateEnum<T>(string paramValue, string paramName) where T : StringEnumData<T>
{
    return (!String.IsNullOrEmpty(paramValue) && T.IsValid(paramValue);
}
这里C#编译器告诉我,T是一个类型参数,不能这样写。
请问如果想达到我的要求(即限制类型参数T,都是从StrEnum派生下来的,这样我可以调用基类StrEnum中的IsValid),我该怎么写?谢谢!