Sieht so aus, als ob du es in diesem Fall machst, um zu vermeiden, zu boxen? Schwer zu sagen, ohne mehr Informationen, aber für dieses spezielle Beispiel wäre es viel einfacher und wahrscheinlich weniger fehleranfällig, nur Methodenüberladung zu verwenden:
%Vor%Um hier speziell zu erfahren, was ist, müssen Sie einen Wert in ein Objekt umwandeln, bevor Sie ihn in den generischen Typ umwandeln:
%Vor%Was IMO ist ziemlich böse und sollte ein letzter Ausweg sein - macht sicherlich nicht Ihren Code sauberer.
Jedes Mal, wenn Sie generische Parameter typisieren, ist dies ein gutes Anzeichen dafür, dass Generika nicht die richtige Lösung für Ihr Problem sind. Generische Parametertypprüfungen machen Ihren Code komplexer, nicht einfacher. Es macht eine Methode verantwortlich für verschiedene Verhaltensweisen, die auf dem Typ basieren, und nicht auf einer Reihe einzelner Methoden, die leicht geändert werden können, ohne die anderen zu beeinträchtigen. Siehe Grundsatz der einfachen Verantwortlichkeit .
>Zunächst einmal ist das ein sehr schlechtes Muster. Sie sollten diese Art von Muster nicht verwenden. Vielleicht, wenn Sie beschreiben, was Sie wirklich erreichen wollen, gibt es bessere Antworten.
Code unten funktioniert, aber wie ich schon sagte Code schreiben ist eine schlechte Idee.
%Vor%Und Verwendung:
%Vor%Tags und Links c# generics generic-method out-parameters
Ich versuche, die eindeutigen Einschränkungen einer Tabelle mit Java zu finden (auf einer Oracle-Datenbank, aber das sollte keinen Unterschied machen).
Ich habe einen Weg gefunden, um die Primärschlüssel einer Tabelle zu entdecken, dank DatMetData's getPrimaryKeys (....); Jedoch konnte ich die einzigartigen Konstanten der Tabellen nicht finden, und das Internet konnte mir nicht helfen, daher beende ich hier meine Frage:)
Gibt es einen sauberen Weg, um die eindeutigen Bedingungen (oder besser gesagt die Namen der Spalten, die für eine Tabelle eindeutig sein müssen, zu finden. Nun, Sie bekommen es hehe) einer Tabelle? Mit freundlichen Grüßen,
Nils
Eindeutige Einschränkungen werden normalerweise von einem Index erzwungen. Vielleicht verwenden Sie %code% , um die Indizes zu finden, bei denen der nicht eindeutige Wert falsch ist?
Wenn Oracle Indizes für eindeutige Constraints erstellt (ich weiß nicht, ob dies der Fall ist, müssen Sie das überprüfen), dann können Sie über %code%
Ihre Constraints herausfindenSie können das Datenwörterbuch abfragen:
%Vor%Da die meisten Datenbanken diese Einschränkungen als Index speichern, können Sie DatabaseMetaData.getIndexInfo () wie bereits erwähnt. Dies funktionierte gut bei der Verwendung von Postgresql .
Es ist nur wichtig, %code% mit dem vierten Parameter als %code% aufzurufen, da die Dokumentation besagt:
%code% - wenn wahr, nur Indizes für eindeutige Werte zurückgeben; wenn falsch, Rückgabe von Indizes unabhängig davon, ob eindeutig oder nicht
Mit dem folgenden Code:
%Vor%können Sie anrufen:
%Vor%und erhalten Sie eine Liste aller eindeutigen Einschränkungen für eine bestimmte Tabelle zurück. Die Einschränkungen sind nach Index gruppiert, da ein Index mehrere Spalten abdecken kann, wenn sie nur in Kombination eindeutig sind.