Ich spreche nicht über generische Klassen, die Eigenschaften oder Felder mit dem Typ eines generischen Parameters deklarieren. Ich spreche über generische Eigenschaften, die sowohl auf generische als auch auf nicht-generische Klassen angewendet werden können.Denken Sie, dass generische Eigenschaften in .NET nützlich wären?
Ich rede nicht darüber nach:
public class Base<T>
{
public T BaseProperty { get; set; }
}
Ich spreche über diese:
public class Base
{
public T BaseProperty<T>
{
get
{
// Insert magic
}
set
{
// Insert magic
}
}
}
Oder diese:
public class Base<U>
{
public T BaseProperty<T>
{
get
{
// Insert magic
}
set
{
// Insert magic
}
}
public U OtherBaseProperty { get; set; }
}
Die Nutzung wäre in etwa so gehen :
var b = new Base();
b.BaseProperty<int> = 42;
int i = b.BaseProperty<int>;
b.BaseProperty<string> = "Hi";
string s = b.BaseProperty<string>;
Oder für das zweite Beispiel:
var b = new Base<string>();
b.BaseProperty<int> = 42;
int i = b.BaseProperty<int>;
b.OtherBaseProperty = "Hi";
string s = b.OtherBaseProperty;
Der // Insert Magie bezieht sich jeden Anruf an die allgemeine Eigenschaft Getter oder Setter Handhabung, die einen anderen Typ für den Typ-Parameter hat.
Zum Beispiel diese:
b.BaseProperty<int> = 42;
Needs anders behandelt werden:
b.BaseProperty<string> = "Hi";
ich, dass für jeden Typ T ins Auge fassen würde, wenn der Getter genannt wird, bevor der Setter dann standardmäßig aufgerufen wird (T) wird zurückgegeben. Wenn der Setter aufgerufen wird, wird der Wert pro Typ T gespeichert, so dass beim nachfolgenden Aufruf des Getter der vorherige Wert zurückgegeben wird, der für diesen Typ festgelegt wurde.
Beachten Sie, dass unter den Abdeckungen Eigenschaften nur Methoden sind.
Denkst du, das wäre nützlich?
Nein, es scheint nicht so nützlich zu sein. Wenn ich eine Int-Eigenschaft brauche, werde ich eine machen. Wenn ich eine String-Eigenschaft brauche, mache ich eine. Ziemlich einfach. –