Je souhaite créer une sous-classe EventArgs générique qui possède une propriété en écriture seule qui, mise à jour par le code qui gère l'événement, mettra également à jour le paramètre byref du constructeur de la classe.Accès au paramètre constructeur ByRef
Le code que j'ai jusqu'ici ne fonctionne pas. Comment obtenir la propriété "Item" pour mettre à jour le paramètre constructeur "item" afin que je puisse récupérer la valeur qui a été définie?
public class EventArgsSet<T> : EventArgs
{
public EventArgsSet(ref T item)
{
Item = item;
}
public T Item
{
private get;
set;
}
}
Je veux être en mesure de déclencher l'événement comme celui-ci (VB.NET):
Dim myItem As SomeType = Nothing
Dim e = new EventArgsSet(Of SomeType)(myItem)
RaiseEvent SomeEvent(Me, e)
//'Do something with myItem
Et le gestionnaire d'événements pourrait ressembler à ceci:
Public Sub myObj_SomeEvent(sender As Object, e As EventArgsSet(Of SomeType)) Handles myObj.SomeEvent
e.Item = theObjectToSet
End Sub
Parce que l'événement est tiré d'un objet enfant qui demande d'information de l'objet parent, mais ne devrait pas être nécessaire d'avoir tout k connaissance de la structure des parents. Pour la deuxième partie de votre réponse, oui, je suis au courant de la faille dans le code que j'ai posté, mais je pensais que cela aiderait à montrer ce que j'essayais d'accomplir. Je suppose que j'avais tort à ce sujet. – adam0101
Si vous avez exposé le getter, vous pouvez simplement mettre à jour l'élément directement. ce ne serait pas une simple assignation, il faudrait plutôt que vous sachiez ce que vous devez mettre à jour sur l'objet. Peut-être que vous pourriez utiliser une interface pour permettre à la classe de savoir comment "se mettre à jour" elle-même. – Bryan