[C#] Uitgevoerde code als string laten zien?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 11-09 10:19
Hallo,

Ik ben een voorbeeld tool aan het schrijven om te tonen hoe een implementatie van een webservice in zijn werk gaat. Dus het laten zien hoe een andere programmeur een implementatie moet maken om een bepaalde opdracht voor elkaar te krijgen.

Het liefste wil ik de code die ik in mijn sample uitvoer (textbox) laten zien dus dat de gebruiker wanneer hij op een button klink hij het volgende krijgt te zien in een textbox:
C#:
1
2
3
4
5
6
7
 public void ShowHelloWorldIfItIsPast12()
 {
     if(DateTime.Now.Hour > 12)
     {
        MessageBox.Show("Hello World");
     }
 }


Mocht ik het voorbeeld later willen aanpassen hoef ik me geen zorgen te maken of de text wel correct is. Weet iemand of dit mogelijk is? Op internet zie ik alleen voorbeelden van hoe het andersom moet (dus van text naar code)

Mess with the best, die like the rest


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 01:33

MueR

Admin Tweakers Discord

is niet lief

Je kan toch gewoon de source file als plain text file kunnen openen? Moet je alleen even de juiste regelnummers tonen e.d.

[ Voor 28% gewijzigd door MueR op 06-07-2010 14:36 ]

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

Dat lijkt me inderdaad de beste oplossing. Tenzij je graag moeilijk doet en een soort .NET reflector wilt namaken (door middel van ildasm)

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Sebazzz schreef op dinsdag 06 juli 2010 @ 14:39:
Dat lijkt me inderdaad de beste oplossing. Tenzij je graag moeilijk doet en een soort .NET reflector wilt namaken (door middel van ildasm)
C# code on-the-fly compileren en uitvoeren is peanuts. Sterker: het .Net framework voorziet daar in dmv een shitload aan classes: zie (o.a) de CodeDomProvider en CSharpCodeProvider. Geen reflectie en ildasm nodig.

[ Voor 12% gewijzigd door RobIII op 06-07-2010 14:51 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Rob, als ik de TS goed begrijp wil 'ie juist de andere kant op. Van IL naar leesbare code.

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
AtleX schreef op dinsdag 06 juli 2010 @ 14:50:
Rob, als ik de TS goed begrijp wil 'ie juist de andere kant op. Van IL naar leesbare code.
Ah. Good meuning 8)7

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 11-09 10:19
MueR schreef op dinsdag 06 juli 2010 @ 14:36:
Je kan toch gewoon de source file als plain text file kunnen openen? Moet je alleen even de juiste regelnummers tonen e.d.
Het liefste lever ik de code file niet mee, dit omdat ik slechts delen van de code wil laten zien

Mess with the best, die like the rest


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Iets met een SQL Compact database, die meeleveren en daarin de code opslaan?

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 11-09 10:19
Snake schreef op dinsdag 06 juli 2010 @ 15:05:
Iets met een SQL Compact database, die meeleveren en daarin de code opslaan?
En de code die ik intyp moet ik dus alsnog in de DB opslaan? Dan doe ik het liever hard coded bij de methode zelf

Mess with the best, die like the rest


Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Je zou met commentaar kunnen aangeven welke stukken je wilt weergeven:
C#:
1
2
3
4
5
// SNIPPET "init"
public void init() {
  bla();
}
// END

En dan at compile-time met een script en een regex alles eruit filteren en ergens opslaan.
Vies, maar het werkt wel :p

Andere optie is toch wat RobIII zegt: je code sla je in je programma hardcoded op als string. Die kun je dan weergeven, en voor het uitvoeren ervan compileren...

edit: misschien kun je ook wel je .cs bestanden parsen en kijken welke methoden + broncode erin zitten. Ik ken echter de C# parser/compiler API niet, maar dat zou je dan bij het compileren kunnen doen.

[ Voor 26% gewijzigd door user109731 op 06-07-2010 15:25 ]


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

En met ildasm decompileer je de bytecode naar IL ;) (IL disassembler)

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]

Pagina: 1