Tengo el siguiente código y quiero pasar MinValue y MaxValue de un tipo genérico. También ayudaría poder especificar de alguna manera que el tipo genérico debe tener las propiedades MinValue y MaxValue a través de las interfaces, pero no puedo encontrar la interfaz correcta.
public class TreeNode<T> where T : IComparable { public T data { get; set; } public TreeNode(T value) {...} public bool IsValidBST() { return IsValidBST(this, T.MinValue, T.MaxValue); } public bool IsValidBST(TreeNode<T> node, T min, T max) {...} } Pero mi compilador me dice que " T es un parámetro de tipo que no es válido en el contexto dado".
A principios de 2022, esta funcionalidad se encuentra actualmente en versión preliminar en .NET 6, en el marco del trabajo que se está realizando en matemáticas genéricas . La interfaz en cuestión es IMinMaxValue<TSelf> :
public class TreeNode<T> where T : IMinMaxValue<T> { // ... public bool IsValidBST() { return IsValidBST(this, T.MinValue, T.MaxValue); } } Sin embargo, los miembros static abstract , que le permiten acceder, por ejemplo, T.MinValue en algún tipo T genérico, no están disponibles actualmente a menos que opte por estas funciones de vista previa (consulte la publicación de blog anterior para obtener instrucciones sobre cómo hacerlo).
Si no desea optar por las funciones de vista previa, no hay una función integrada para hacer lo que necesita.