Public Class User Public Property UserName as String Public Property UserObj as Object ' on lui affecte la classe de base Object End Class ' Quelque part ailleurs je vais appeler une procédure TEST comme cela Dim oUser as New UserObj TEST (oUser) ' Et dans ma procédure TEST j'aimerai faire quelque chose du genre Public Sub TEST(ByVal oClass as Object) Dim oItem As New Object = oClass . End Sub
Dim oItem As User = TryCast(titi, User) If oItem Is Nothing Then MessageBox.Show("L'objet n'est pas un User")
Public Sub TEST(Of T) (ByVal oClass as Object) Dim oItem As Object = Clone(Of T)(oClass) ...... End Sub Private Function Clone(Of T)(ByVal Source As Object) As Object If Not GetType(T).IsSerializable Then Throw New ArgumentException("The type must be serializable.", "source") End If If Object.ReferenceEquals(Source, Nothing) Then Return Nothing End If Dim formatter As System.Runtime.Serialization.IFormatter = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter() Dim stream As System.IO.Stream = New System.IO.MemoryStream() Using stream formatter.Serialize(stream, Source) stream.Seek(0, System.IO.SeekOrigin.Begin) Return CType(formatter.Deserialize(stream), T) End Using End Function
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionJe ne veux (peux) pas modifier la classe User qui sert de Model à ma base de donnéesVB (salut) a raison, avoir une propriété du même nom que la classe n'est pas judicieux, peut-être peux tu changer le nom de la classe.
Et bien entendu, je n'ai pas forcément besoin d'un User. L'idée est justement de pouvoir traiter plusieurs scénarii dans la même procédure. Des fois ce sera un User des fois autre chose.oui mais quoi comme autre chose, si c'est des voitures, ou des organes, pas sûr qu'un traitement commun soit le mieux.
D'ailleurs le paramètre "ByVal oClass as Object" ne contient aucune valeur (dans notre exemple juste un New User vide de données). Il ne sert à rien d'autre qu'informer la procédure du type de class qu'elle va traiter.alors
New User vide de donnéesça n'est pas
aucune valeurc'est un User.
Il ne sert à rien d'autre qu'informer la procédure du type de class qu'elle va traiter.je ne suis pas sûr de comprendre, mais si j'ai compris
If TypeOf titi Is user Then MessageBox.Show("c'est un User") End Ifrépondrait à ta demande.
Enum Traitement Defaut User Bidule Machin End Enum 'plus loin Select Case monTraitrement Case Traitement.User 'faire le truc de User Case Traitement.Bidule 'faire le truc de bidule End Select