Je ne parle pas de classes génériques qui déclarent des propriétés ou des champs avec le type d'un paramètre générique. Je parle de propriétés génériques qui pourraient être appliquées aux classes génériques et non génériques.Pensez-vous que les propriétés génériques seraient utiles dans .NET?
Je ne parle pas de ceci:
public class Base<T>
{
public T BaseProperty { get; set; }
}
Je parle de ceci:
public class Base
{
public T BaseProperty<T>
{
get
{
// Insert magic
}
set
{
// Insert magic
}
}
}
Ou ceci:
public class Base<U>
{
public T BaseProperty<T>
{
get
{
// Insert magic
}
set
{
// Insert magic
}
}
public U OtherBaseProperty { get; set; }
}
L'utilisation irait à quelque chose comme ça :
var b = new Base();
b.BaseProperty<int> = 42;
int i = b.BaseProperty<int>;
b.BaseProperty<string> = "Hi";
string s = b.BaseProperty<string>;
Ou pour le deuxième exemple:
var b = new Base<string>();
b.BaseProperty<int> = 42;
int i = b.BaseProperty<int>;
b.OtherBaseProperty = "Hi";
string s = b.OtherBaseProperty;
Le // Insérer magique se réfère à la manipulation de chaque appel au getter ou setter de propriété générique qui a un type différent pour le paramètre de type.
Par exemple ceci:
b.BaseProperty<int> = 42;
doit être traité différemment à:
b.BaseProperty<string> = "Hi";
j'envisager que pour chaque T si le getter de type est appelé avant le poseur est alors appelé par défaut (T) est retourné. Lorsque le setter est appelé, la valeur est stockée par type T de sorte que lorsque le getter est appelé par la suite, la valeur précédente qui a été définie pour ce type est renvoyée.
Notez que sous les propriétés de couvertures sont juste des méthodes.
Pensez-vous que ce serait utile?
Non, cela ne semble pas très utile. Si j'ai besoin d'une propriété int, j'en fabriquerai une. Si j'ai besoin d'une propriété de chaîne, j'en ferai une. Assez simple. –