Es gibt keine solche Art von Einschränkungen in .NET. Es gibt nur sechs Arten von Einschränkungen zur Verfügung (siehe Constraints on Type Parameters):
where T: struct
Typargument ein Werttyp
where T: class
Typargument ein Referenztyp
where T: new()
Argument Typ sein muss, einen öffentlichen parameterlosen Konstruktor muss sein müssen
where T: <base class name>
Typ Argument muss von der angegebenen Basisklasse sein oder ableiten
where T: <interface name>
Typargument muss die angegebene interfa sein oder implementieren ce
where T: U
Typargument für T geliefert müssen oder vom Argument für U geliefert abzuleiten sein
Wenn Sie Zeichenfolge auf Ihre Art werfen möchten, können Sie zunächst nichts dagegen haben Gießen. Aber man kann nicht Einschränkung für Typ-Parameter setzen, um dieses Casting stellen Sie sicher auftreten:
static T GetObjectFromRegistry<T>(string regPath)
{
string regValue = //Getting the regisstry value...
T objectValue = (T)(object)regValue;
return objectValue ;
}
Eine weitere Option - erstellen Schnittstelle:
public interface IInitializable
{
void InitFrom(string s);
}
und legte es als Einschränkung:
static T GetObjectFromRegistry<T>(string regPath)
where T: IInitializable, new()
{
string regValue = //Getting the regisstry value...
T objectValue = new T();
objectValue.InitFrom(regValue);
return objectValue ;
}
Es gibt keine solche Einschränkungen in .NET –