Forums Neueste Beiträge
 

Klasse / Typ / generischer Aufruf

18/08/2008 - 11:26 von Ulrich Bernhardt | Report spam
Hallo,

folgendes Problem kann ich einfach nicht lösen, das heisst nichts.
Hoffentlich/vielleicht finde ich hier Hilfe. Folgendes:


namespace N{

class A1 : A{

Meth_M{
//Eindeutiger Inhalt A1.M
}
}

class A2 : A{

MethM{
//Eindeutiger Inhalt A2.M
}
}

...
...
...

}

Jetzt kommt's...

public partial class Form1 : System.Windows.Forms.Form
{

private void toolStripDropDownButton1_DropDownItemClicked( ... )
{

if( e.ClickedItem == A1ToolStripMenuItem )
Generate<N.A1>( new A1.A1(), ... );

else if( e.ClickedItem == A2ToolStripMenuItem )
Generate<N.A2>( new A2.A2(), ... );

...
...
...
}


void Generate<T>( T rnd, ... ) {

..
}
{
}

Das klappt so (ganz gut). Aber besser (wirklich gut) wàre doch was anderes.
Es muss doch möglich sein, aus dem DropDownItemClicked-Ereignis direkt (ohne
die vielen if's) auf die Generate-Methode zugreifen zu können. Ich schaffe es
einfach nicht den Aufruf richtg zu formulieren, z.B.
System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFrom(
"myExe.exe" );
Type[] types = assembly.GetTypes();

und dann mit Hilfe von types weiterzuarbeiten. Geht nicht. Aber wenn meine
Logik mit dem Aufruf von Generate>T>(... aus DropDownItemClicked
funktioniert, dann muss auch die Funktionsweise von DropDownItemClicked
reduzierbar sein (bspw. wenn zur Laufzeit das toolStripDropDownButton1 erst
gefüllt wird).

Für jede ersnthafte Antwort, vielen Dank im Voraus, Ulrich.
 

Lesen sie die antworten

#1 Frank Dzaebel
18/08/2008 - 12:45 | Warnen spam
Hallo Ulrich,

folgendes Problem kann ich einfach nicht lösen, das heisst nichts.
Hoffentlich/vielleicht finde ich hier Hilfe. Folgendes:
namespace N { [...] }



wenn es z.B. in der N.A-Klasse eine Eigenschaft Name gibt ...

void Generate<T>(T a, params object[] parameter) where T:N.A
{
MessageBox.Show(
"Typ : " + a.GetType().FullName + "" +
"Name: " + a.Name);
}

private void toolStripDropDownButton1_DropDownItemClicked(
object sender, ToolStripItemClickedEventArgs e)
{
N.A aX = Activator.CreateInstance(Type.GetType("N.A" +
e.ClickedItem.Name[1])) as N.A;
Generate(aX, "irgendwas");
}

ist aber eher ungewöhnlich, solche Namens-Matchings
zu implementieren.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen