Oppure

Loading
01/03/11 17:18
Phil93
Salve a tutti.
Come faccio a creare proprietà "nidificate"? Per esempio:

TextBox1.Text
TextBox1.Text.Length

Più precisamente, dovrei far esporre una proprietà alla proprietà "Message" di una classe che eredita da Exception.

Cosa devo mettere in questo blocco?

Public Overrides ReadOnly Property Message As String
        Get
            Return "Process failed."
        End Get    
    End Property


Grazie.
aaa
01/03/11 17:39
HeDo

Allora, quelle che tu chiami "proprietà di proprietà" o "proprietà nidificate" altro non sono che proprietà (o campi) di oggetti che sono proprietà di un oggetto.

Quello che vuoi fare te si può implementare molto semplicemente ereditando dalla classe Exception e implementando un opportuno costruttore:


Class MyException
	Inherits Exception
	Public Sub New()
		MyBase.New("Process Failed")
	End Sub
End Class



in questo modo potrai sollevare l'eccezione MyException senza doverti preoccupare del message, perchè verrà visualizzato "Process Failed":


Throw New MyException()



in alternativa potevi fare qualcosa di questo genere:


Throw New Exception("Process Failed")

aaa
02/03/11 10:54
Il Totem
No, non è quello che vuole fare, presumo.

Nel tuo esempio TextBox1 è un oggetto di tipo TextBox, il quale espone la proprietà Text, che contiene un oggetto di tipo stringa. Tutte le stringhe dispongono della proprietà Length; quindi, come ha detto HeDo, il concetto che hai di proprietà nidificate è sbagliato. Non esistono cose del genere. Esistono solo proprietà che restituiscono altri oggetti con altre proprietà.
Esempio:
class Person
{
    public Person Father { get; set; }
    public Person Mother { get; set; }
    public Person Mate { get; set; }
    public List<Person> Children { get; set; }

    // ...
}

// Assumendo che non esistano oggetti nulli:
Person mySelf = new Person("Mario", "Rossi", "6/7/1980");
// ...

// Ecco il comportamento che chiami proprietà nidificate:
Person grandFather = mySelf.Father.Father; // nonno
Person motherInLaw = mySelf.Mate.Mother; // suocera
Person nephew = mySelf.Father.Children[1].Children[0]; // nipote (di zio)
aaa