J'ai du mal à implémenter une monade peut-être - que j'ai appelé Nullable dans cet exemple.Objets imbriqués Nullable et la monade Peut-être
La classe Nullable est mis en œuvre comme suit:
Public NotInheritable Class Nullable(Of TClass)
Private _value As TClass
Private _hasValue As Boolean
Public Shared Function Create(ByVal value As TClass) As Nullable(Of TClass)
Return New Nullable(Of TClass)(value)
End Function
Public Shared Function Create() As Nullable(Of TClass)
Return New Nullable(Of TClass)()
End Function
Private Sub New()
HasValue = False
End Sub
Private Sub New(theValue As TClass)
Value = theValue
HasValue = True
End Sub
Public Property Value() As TClass
Get
Return _value
End Get
Private Set(value As TClass)
_value = value
End Set
End Property
Public Property HasValue() As Boolean
Get
Return _hasValue
End Get
Private Set(value As Boolean)
_hasValue = value
End Set
End Property
End Class
Il y a une classe parente mis en œuvre comme
Class Parent
Public Property ChildClass as Nullable(Of Child)
End Class
et une classe enfant est tout simplement
Class Child
Public Property ID as String
... other properties below ...
End Class
La façon dont la monade est mis en œuvre au moment où je aurais besoin de publier ce qui suit pour accéder à une propriété sur le enfant STED classe
dim id = MyParentClass.ChildClass.Value.ID
mais idéalement ce que je voudrais être en mesure de faire est d'avoir fait la déclaration suivante
dim id = MyParentClass.ChildClass.Id
et si le ChildClass est nul alors que renvoyer une valeur par défaut de la propriété type.
J'ai essayé de l'implémenter en utilisant les propriétés par défaut et en définissant la valeur par défaut via un attribut mais il ne serait pas compilé.
Est-ce que cela sera possible ou peut-être y a-t-il une meilleure façon de l'architecturer - ou peut-être que je n'ai pas la monade?
De nombreux ZCI
Simon
+1 Merci beaucoup pour votre réponse. Simon –