[C#]Codedom vraag

Pagina: 1
Acties:

  • Viper®
  • Registratie: Februari 2001
  • Niet online
Ik probeer met codedom de volgende statement te genereren:

Textbox.Location = new Point(100,0);

tot nu toe heb ik dit:

Point pnt = new Point(100,0);

new Codeassignstatement(new codetypereferenceexpression("textbox.location"), new codeobjectcreateexpression("Point", ... )));

Maar hoe krijg ik nu de waarde van de pnt (100,0) in codedom. Point is geen primitief datatype dus codeprimitiveexpression werkt ook niet.

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 01-05 19:09

pjvandesande

GC.Collect(head);

Je zou niet zoiets kunnen doen als:

C#:
1
new Codeassignstatement(new codetypereferenceexpression("textbox.location.X"), new codeobjectcreateexpression("int", ... )));


En dan ook de Y location setten?

[ Voor 19% gewijzigd door pjvandesande op 22-04-2005 16:47 ]


  • Viper®
  • Registratie: Februari 2001
  • Niet online
Ongetwijfeld, aangezien int een primitief type is.

Nadeel is dat ik met een Point "moet" werken. Ik gebruik offset om de positie aan te passen, wordt vrij vervelend bij het hele programma alles te vervangen door 2 int voor X en Y.

In principe omzeil je het probleem alleen maar door nu 2 Int's te gebruiken. Het moet toch bijna wel mogelijk zijn om een new Point te gebruiken met de waarde van een huidige Point.

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 01-05 19:09

pjvandesande

GC.Collect(head);

Kijk hier is naar, zo moet het lukken:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
    CodeVariableDeclarationStatement myPointVariable;
    myPointVariable = new CodeVariableDeclarationStatement(typeof(Point), "myPoint");

    CodeExpression parameters = new CodeExpression[]
        {
        new CodePrimitiveExpression(100),
        new CodePrimitiveExpression(10)
        };

    CodeObjectCreateExpression initializer;
    initializer = new CodeObjectCreateExpression(typeof(Point), parameters);

    myPointVariable.InitExpression = initializer;


Zou moeten werken imho.