est-il valide et légal et vers le bas-cast dans le cas suivant:C# question vers le bas-casting
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 ?
Ou est-il préférable d'utiliser la composition/agrégation?
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);
J'ai interprété le code comme défaillant parce que B n'est pas un A, donc la distribution n'est pas possible, dans le premier cas. Suis-je à la mauvaise extrémité du bâton? –
@Tim: Pas du tout. C'est la même chose que j'ai dite, juste avec des mots différents. :) – cdhowie
Merci pour votre réponse. Mon vrai problème est que je crée une identité personnalisée qui devrait implémenter IIdentity et contenir des informations supplémentaires utiles sur l'utilisateur. J'ai juste essayé d'éviter l'agrégation. – a1ex07