Es scheint eine bequemere Möglichkeit, dies zu tun. Hier ist eine kurze Zusammenfassung dessen, was ich gefunden habe.
Angenommen, ich füge meiner Lösung ein (Klassenbibliothek) Projekt namens MyDB hinzu. In dieses Projekt füge ich ein DataSet namens "Data" hinzu. Und in diesen Datensatz ziehe ich eine Tabelle namens "X".
Was ich auf der Designoberfläche bekomme, ist ein Objekt, das zeigt, dass ich ein Objekt namens "XTableAdapter" habe.
Ich öffne jetzt den generierten Code, Data.Designer.cs, und suche nach XTableAdapter. Wenn ich es finde, merke ich, dass es in Namespace MyDB.DataTableAdapters enthalten ist - das ist nur eine Verkettung des Namens des Projekts, "MyDB", der Name des DataSet, "Data" und "TableAdapters".
Mit dem in der Hand, gehe ich jetzt zurück in die Klassenbibliothek, noch immer Class1.cs (die ich für jetzt ignorieren werde).
Ich ändere seinen Namespace von MyDB zu MyDB.DataTableAdapters.
using System.Data.SqlClient;
namespace MyDB.DataTableAdapters
{
public partial class XTableAdapter
{
public void SetTimeout(int seconds)
{
foreach (SqlCommand cmd in CommandCollection)
{
cmd.CommandTimeout = seconds;
}
}
}
}
sein könnte Die Aufrufsequenz kaum deutlicher:
ich die Klassendeklaration öffentliche Teilklasse XTableAdapter, und machen es so aussehen ändern
int TwoMinutes = 120;
XTableAdapter.SetTimeout(TwoMinutes);
Weniger Durcheinander, weniger Aufwand, weniger Reflektion (naja, keine), weniger Füllung.
-1 Dies wird nicht funktionieren, da ein stark typisiertes 'TableAdapter' die Eigenschaft' Adapter' nicht freigibt, es ist 'privat'. Der einzige Weg abseits der Spiegelung ist also, die partielle Klasse des TableAdapter zu erweitern, um sie öffentlich zu machen. –