1

Hello! J'aimerais faire un truc du genre en Java:
class Connection {
    // On ne peut créer une ConnectionClient que comme ça
    public ConnectionClient createConnection(string client) {
        return new ConnectionClient(this, client);
    }

    public class ConnectionClient {
        // Je ne veux pas qu'on puisse l'appeler depuis l'extérieur
        private ConnectionClient(Connection c, string client) { ... }
    }
};

Mais en C#. On dirait que c'est vraiment impossible, étant donné qu'un parent a la même visibilité sur ses sous classes que l'extérieur. Donc je suis obligé de mettre le constructeur de ConnectionClient public sad
Quelqu'un a une solution? smile
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

2

tu peux pas rendre ton constructeur privé et utiliser "friend" ?

[edit] oops, C# pas C++ ^^

le mot-clé "internal" ne te permet pas de faire ce que tu veux ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

3

Merci. Le mot clé internal permet de me restreindre à l'assembly (c-à-d un projet), pas à la classe. Donc c'est une solution, mais ça me fait un peu chier de créer une classe & un namespace & un projet juste pour ça...
C'est marrant, C# n'a pas la notion de classes internes d'ailleurs, ça résoudrait mes problèmes ^^
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

4

c'est sûr... ben je sais pas du tout alors, désolé ^^

!call yAro ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

A priori c'est impossible de faire ca tel quel. Il faudrait un peu modifier le design de tes classes pour faire ca en c#. Les classes internes existent mais leur utilisation n'est pas tres tres répendue ....
avatar
Webmaster et développeur du site. Pour tout probleme ou question envoyez un mini message ou mail.

Suivez l'actualité de tous vos site préférés sur yAronews : http://ns.yaronet.com =)

6

C'est à dire? smile
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

7

Zephyr (./2) :
tu peux pas rendre ton constructeur privé et utiliser "friend" ?

On peut rendre le constructeur private/protected en C++ ?

J'ai des doutes confus
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

8

encore heureux qu'on puisse, tu fais un singleton comment sinon ? ^^
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

9

Heu ok je trouve pas ça très pratique (ni vraiment compris cet interet "soudain" pour les design patterns) mais ok
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

10

"soudain" ? je crois qu'il va falloir envisager quelques session google pour rattraper tout ça grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

11

Une solution parmi d'autres:
class A
{
  delegate B CreateBDelegate();
  static CreateBDelegate createB;

  static B CreateB()
  {
    createB();
  }

  public class B
  {
    static B()
    {
      A.createB = Create;
    }

    static B Create()
    {
      return new B();
    }

    B()
    {
    }
  }
}
Normalement, ça devrait marcher, et normalement, il devrait y avoir moyen de faire mieux (y'a d'autres méthodes aussi mais je pense qu'à priori elles sont moins bien) mais je suis un peu fatigué pour l'instant, je reposterai demain la solution plus mieux s'il y a.
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

12

Ah tiens pas con ^^

Par curiosité, quitte à donner aux classes filles une visibilité complète sur leur classe mère (et donc autoriser ce genre de "retournement" pas super lisible), y'a une raison pour laquelle ils n'ont pas tout simplement choisi une solution plus proche de ce que fait Java ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

13

Pas con mais horrible, autant passer par de la reflection grin

Bon j'ai regardé un peu + en détail y'a pas de moyen propre de faire ca ....
avatar
Webmaster et développeur du site. Pour tout probleme ou question envoyez un mini message ou mail.

Suivez l'actualité de tous vos site préférés sur yAronews : http://ns.yaronet.com =)

14

PS : le mieux que j'ai trouvé c'est ca :

    class A
    {
        public A()
        {
            B c = new C("plop") as B;
        }

        public class B
        {
            protected string pwic;

            protected B()
            {}
        }

        private class C : B
        {
            public C(string pwic)
            {
                base.pwic = pwic;
            }
        }
    }
avatar
Webmaster et développeur du site. Pour tout probleme ou question envoyez un mini message ou mail.

Suivez l'actualité de tous vos site préférés sur yAronews : http://ns.yaronet.com =)

15

Ok merci je vais faire ça ^^
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741