2011-05-10 3 views
0

J'ai créé un jeu de données à l'aide du concepteur de jeu de données. Une de mes tables s'appelle Users et il y a donc une classe appelée UsersDataTable. Dans cette classe sont quelques propriétés, à savoir Connection. J'ai donc créé un Partial Class UsersDataTable, mais aucune des routines, propriétés ou variables de la classe UsersDataTable dans le fichier codebehind du concepteur ne sont visibles pour moi.Extension de la classe DataSet ne fonctionnant pas

J'essaie simplement d'étendre la classe pour ajouter mes propres routines, mais en tirant parti des connexions et du typage fort de la classe générée par le concepteur. J'ai essayé de créer mes propres classes partielles et de les tester pour voir si j'ai le problème avec d'autres classes et je ne le fais pas. Uniquement avec ces classes générées par le concepteur de jeux de données, je ne peux pas accéder aux éléments de l'autre moitié de la classe partielle.

Je travaille dans .Net 4. Que pourrais-je faire de mal?

Répondre

0

Il semble que je viens étendu ma classe en utilisant les mauvais identifiants:

Il y a un Namespace et à l'intérieur de l'espace de noms est le Partial Public Class. Par conséquent, mon code de:

Partial Public Class myData 
    Partial Public Class UsersTableAdapter 
     Public Function DoSomething() As String 
      Return "Testing..." 
     End Function 
    End Class 
End Class 

a eu tort ... Ce que je avais besoin était:

Namespace myDataTableAdapters 
    Partial Public Class UsersTableAdapter 
     Public Function DoSomething() As String 
      Return "Testing..." 
     End Function 
    End Class 
End Namespace 
1

Toutes les classes « partielles » doit être déclarée en tant que telle pour que cette technique fonctionne, et je devine que le concepteur DataSet Visual Studio ne génère pas de classes partielles:

http://msdn.microsoft.com/en-us/library/wa80x488(v=VS.100).aspx

Vous devrez peut-être hériter des classes générées par le concepteur à la place.


EDIT: juste regardé certaines classes DataSet généré VS2010, et ils sont en effet partiel, de sorte que vous utilisez en supposant .NET 4, le vôtre devrait être partielle aussi bien. Je vais enquêter plus loin.


EDIT DE PLUS:

OK, puisque le concepteur crée les * cours DataTable comme des classes imbriquées au sein d'une classe qui hérite de DataSet, vous devrez peut-être faire la même chose dans votre classe partielle:

public partial class UsersData 
{ 
    public partial class UsersDataTable 
    { 
     public string Foo { get; set; } 
    } 
} 

Cela semble fonctionner pour moi.

+0

En effet le mien sont partielles. Je vous remercie d'avoir enquêté. Si l'exemple de code m'aidera, j'en ai quelques uns à fournir. – cjbarth

+0

Notez qu'il existe une variable privée '_connection' dans' Publical Class ClassTableAdapter'. Pouvez-vous accéder à cette variable à partir de votre classe partielle? – cjbarth

Questions connexes