Toon posts:

[C#] Aanmaken van object met een string als aanroep *

Pagina: 1
Acties:
  • 131 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik wil graag weten of het volgende mogelijk is:

Ik heb een class genaamd Voornaam.cs . Om van deze classe een object aan te maken:

C#:
1
Voornaam voornaam = new Voornaam();


nu heb ik een string:
C#:
1
string nicky = "Voornaam";



kan ik die string gebruiken om een nieuw object van Voornaam.cs aan te maken, dus dat ik de waarde van de string gebruikt voor de aanroep?

[ Voor 2% gewijzigd door Verwijderd op 28-06-2005 11:41 . Reden: sorry van het topic (vergeten titel in te vullen :( ) ]


Verwijderd

Constructor parameter?

[ Voor 30% gewijzigd door Verwijderd op 28-06-2005 11:39 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:36
Waarom noem je in godsnaam een class Voornaam ? Waarom is een gewone string niet voldoende ?

Om op jouw vraag te antwoorden: ja, het is mogelijk. Kijk eens naar reflection.
(Dat is toch wat je bedoeld ? Dat je in de string gaat kijken, en dan een object maakt van het type dat je in die string aangeeft) ?
Ik weet wel niet wat je bedoeling is, maar dit kan nogal een ranzige manier van werken zijn.... Meestal duidt het op een slecht design.

Trouwens, kan je eens een goede titel verzinnen ?

[ Voor 49% gewijzigd door whoami op 28-06-2005 11:41 ]

https://fgheysels.github.io/


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
IDD, Meestal is het een goed stelregel om te zeggen "Gebruik Reflection zo min mogenlijk".

Meestal is het totaal niet nodig om reflection te gebruiken en duid het er meer op dat je op de verkeerde manier aan het denken bent. Meestal komt dat omdat je eerst in een taal gewerkt hebt waar iets van "Eval" bestaat.

Als het goed is weet je in je code at compile time gewoon welke classes je nodig hebt dus dan moet je ook Gewoon netjes de ClassName gebruiken en niet een string die de ClassName bevat.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
whoami schreef op dinsdag 28 juni 2005 @ 11:40:
Waarom noem je in godsnaam een class Voornaam ? Waarom is een gewone string niet voldoende ?

Om op jouw vraag te antwoorden: ja, het is mogelijk. Kijk eens naar reflection.
(Dat is toch wat je bedoeld ? Dat je in de string gaat kijken, en dan een object maakt van het type dat je in die string aangeeft) ?
Ik weet wel niet wat je bedoeling is, maar dit kan nogal een ranzige manier van werken zijn.... Meestal duidt het op een slecht design.

Trouwens, kan je eens een goede titel verzinnen ?
Titel vergeten in te vullen, sorry.

Ik zal even het hele verhaal vertellen voor de duidelijkheid. Het betreft een crystal report viewer in ASP.NET. Met behulp van een openfiledialog in de index pagina wordt een report opgezocht ( de gebruiker zoekt naar het report op de harde schijf). De locatie van het report (bv c:\Report.rpt) wordt doorgestuurd naar een crystalreportviewer op een andere .ascx pagina en getoond:

C#:
1
2
3
4
5
6
//doorsturen van het path
string filename = ffPath.PostedFile.FileName;
if(!filename.Equals(""))
{
    Response.Redirect("index.aspx?report="+filename);
}


C#:
1
2
3
4
5
6
7
8
9
10
11
//tonen van het report
string report = Request.QueryString["report"];
if(report.Equals(null))
{
    CrystalReportViewer1.Visible = false;
}
else
{
    CrystalReportViewer1.Visible = true;
    CrystalReportViewer1.ReportSource = report;
}


Tot zo ver geen probleem, het report wordt netjes op het scherm getoond. Echter is het nu niet mogelijk (zover ik weet) om het report nu te printen. Om dit te doen moet je dus een object van je Report aanmaken:

C#:
1
2
CrystalReport crystalreport = new CrystalReport();
crystalreport..PrintToPrinter(1,true,1,1);


nu kan ik dus achterhalen uit die filename die doorgestuurd wordt wat de naam van het report is:

C#:
1
2
3
int index = report.LastIndexOf(@"\");
report = report.Substring(index+1);
report = report.Remove(report.Length-4,4);


In het geval van het laatste voorbeeld zou dit dus een string opleveren:
C#:
1
string report = "CrystalReport";


Kan ik met deze string een nieuw object van de classe CrysalReport aanmaken?

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:36
Verwijderd schreef op dinsdag 28 juni 2005 @ 11:55:
[...]


Titel vergeten in te vullen, sorry.
Ipv gewoon dat te zeggen, kan je evengoed nu een nieuwe titel verzinnen, en deze via een TR bekend maken, dan kan ik 'm aanpassen.

Om op jouw vraag te antwoorden: ja dat kan, mbhv reflection. Maar dan heb je meestal ook, naast de naam van je class, de naam van de assembly nodig.
Echter, ik vraag me af of dit echt wel nodig is..... * whoami dunkt van niet.

[ Voor 29% gewijzigd door whoami op 28-06-2005 11:58 ]

https://fgheysels.github.io/


  • phYzar
  • Registratie: November 2001
  • Laatst online: 15:28
* phYzar snapt het niet en slingert google aan

asp.net crystal report

Gelijk al de eerste hit geeft een soortgelijk probleem als je aangeeft:
When using Crystal Reports in ASP.NET in a Web Form, the CrystalReportViewer control does not have the export or the print buttons like the one in Windows Form. We can still achieve some degree of export and print functionality by writing our own code to handle exporting.
Werkt de oplossing die daar staat?

  • SlowMeDown
  • Registratie: Mei 2003
  • Laatst online: 13:15
Ik weet niet precies wat je bedoelt, maar als je een instantie van een class wilt aanmaken op basis van de naam van die class en niet het type, dan kijk eens naar de System.Activator class.
Pagina: 1