No estoy hablando de clases genéricas que declaran propiedades o campos con el tipo de un parámetro genérico. Estoy hablando de propiedades genéricas que podrían aplicarse a clases genéricas y no genéricas.¿Crees que las propiedades genéricas serían útiles en .NET?
No estoy hablando acerca de esto:
public class Base<T>
{
public T BaseProperty { get; set; }
}
estoy hablando de esto:
public class Base
{
public T BaseProperty<T>
{
get
{
// Insert magic
}
set
{
// Insert magic
}
}
}
O esto:
public class Base<U>
{
public T BaseProperty<T>
{
get
{
// Insert magic
}
set
{
// Insert magic
}
}
public U OtherBaseProperty { get; set; }
}
El uso sería algo como esto :
var b = new Base();
b.BaseProperty<int> = 42;
int i = b.BaseProperty<int>;
b.BaseProperty<string> = "Hi";
string s = b.BaseProperty<string>;
O para el segundo ejemplo:
var b = new Base<string>();
b.BaseProperty<int> = 42;
int i = b.BaseProperty<int>;
b.OtherBaseProperty = "Hi";
string s = b.OtherBaseProperty;
El // Introducir mágico se refiere a la manipulación de cada llamada a la getter propiedad genérica o setter que tiene un tipo diferente para el parámetro de tipo.
Por ejemplo esto:
b.BaseProperty<int> = 42;
necesita ser manejado de manera diferente a:
b.BaseProperty<string> = "Hi";
Me prever que para cada tipo T si el captador se llama antes de la incubadora se llama entonces por defecto (T) es devuelto. Cuando se llama al colocador, el valor se almacena por tipo T de modo que cuando se llama posteriormente al extractor, se devuelve el valor anterior que se estableció para ese tipo.
Tenga en cuenta que bajo las propiedades de las cubiertas son solo métodos.
¿Crees que esto sería útil?
No, no parece tan útil. Si necesito una propiedad int, haré una. Si necesito una propiedad de cadena, haré una. Bastante simple. –