您可以使用泛型:
public enum TypeA { }
public enum TypeB { }
public enum TypeC { }
public interface I<T> where T : struct
{
DateTime Date { get; set; }
long? Value { get; set; }
T Type { get; set; }
}
public class A : I<TypeA>
{
DateTime Date { get; set; }
long? Value { get; set; }
public TypeA Type { get; set; }
}
public class B : I<TypeB>
{
DateTime Date { get; set; }
long? Value { get; set; }
public TypeB Type { get; set; }
}
public class C : I<TypeC>
{
DateTime Date { get; set; }
long? Value { get; set; }
public TypeC Type { get; set; }
}
从评论中编辑:
如果您已经在使用C 7.3,则可以使用
where T : struct, Enum
作为约束,其中
Enum
将其限制为枚举,但由于它仍然允许
枚举
类(不是枚举),您可以保留
struct
约束也是。