Ist es gültig und legal und nach unten Guss im folgenden Fall:C# Down-Guss Frage
public interface IA {
string Property1 {get;}
}
public class B {
public string Name {get;set;}
}
// class A doesn't have it's own fields, all IA methods/properties are implemented through B methods
public class A:B,IA
{
public string Property1
{
get {return this.Name}
}
}
.....
B b = new B();
A a = (A)b; // will it work ?
Oder ist es besser Zusammensetzung/Aggregation zu benutzen?
public class A :IA
{
private B b;
....
public string Property1 {get {return b.Name;} }
public A(B b) {this.b = b}
}
....
B b= new B();
A a = new A(b);
Ich interpretierte den Code als fehlgeschlagen, weil B ist kein A, so dass die Besetzung nicht möglich ist, im ersten Fall. Bin ich am falschen Ende des Stockes? –
@Tim: Überhaupt nicht. Das ist das Gleiche, was ich gesagt habe, nur mit anderen Worten. :) – cdhowie
Danke für deine Antwort. Mein wirkliches Problem ist, dass ich eine benutzerdefinierte Identität erstelle, die IIdentity implementieren und zusätzliche nützliche Informationen über Benutzer enthalten sollte. Ich habe gerade versucht, die Aggregation zu vermeiden. – a1ex07