Entwickler-Ecke

Andere .NET-Sprachen - C# Klasse in Delphi.Net einbinden???


winx - Fr 07.10.05 10:41
Titel: C# Klasse in Delphi.Net einbinden???
Hi,

da ich mich jetzt ein bißchen in Delphi.Net einlernen will, möchte ich erstmals verschieden Dinge versuchen. Dabei stoße ich schon an das erste Problem:

Wie kann ich folgende C# Klasse in mein Delphi.Net Projekt einbinden, damit ich normal damit arbeiten kann, oder geht das nicht?

Klasse:



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
using System;
using System.Collections.Generic;
using System.Text;

namespace WindowsPersonApplication
{
class Person

private string vorname;
private string nachname;

public Person()
{
vorname = "andreas";
nachname = "betz";
}

public string NameToString()
{

return vorname + " " + nachname;

}


}
}


Christian S. - Fr 07.10.05 11:15

Hallo!

In Form von Quellcode kannst Du die Klasse nicht in einem Delphi .NET - Projekt verwenden. Du kannst jedoch Assemblies, welche in C# erstellt wurden, problemlos in einem D.NET-Projekt verwenden, indem Du sie wie jedes andere Assembly einbindest.

Grüße
Christian


winx - Fr 07.10.05 11:52

Hallo,

hab mal ein Beispiel im Netz gefunden, bei dem es funktioniert (Assembly erstellen und einbinden

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
namespace People

    public class Person 
    {    
        string name; 

        public string Name 
        { 
            get { return name; } 
            set { name = value; } 
        } 

        public Person(string someProperty) 
        { 
            this.name = someProperty; 
        } 
        
        public Person()
        {
           this.name = "Peter";
        }
    } 
}


bei meinem eigenen hat es jedoch nicht funktioniert:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
namespace AllPeople.Persons
{
    public class Person
    {        
            private string vorname;
            private string nachname;


            public Person()
            {
                vorname = "andi";
                nachname = "betzerle";
            }


            public string NameToString()
            {

                return vorname + " " + nachname;

            }

                
    }
}



Wie kann ich, außer über die Konsole, ein Assembly aus einer C#-Klasse (mit VS.net oder delphi.net) erstellen???

Danke


Christian S. - Fr 07.10.05 11:55

Hallo!

Was genau heisst denn "nicht funktioniert"?

Um ein Assembly mit dieser Klasse drin zu erstellen, erstellst Du einfach eine C#-Klassenbibliothek, packst die Datei mit der Klasse rein und kompilierst das. Schon hast Du Dein Assembly :-)

Grüße
Christian


winx - Fr 07.10.05 12:57

- Zuerst habe ich die C# Klasse erstellt
- Danach die Klasse mit dem Befehl csc /t:library /out:n:/person.dll person.cs umgewnadelt
- Und dann als Referenz eingebunden

Das geht bei beiden Klassen, nur findet er beide der zweiten Klasse den Namespace nicht.

Kann ich das Einbinden von einzelnen Klassen oder ganzen Klassenstrukturen (namespaces) auch einfacher machen?

danke


Christian S. - Fr 07.10.05 16:59

Hallo!

Für die Arbeit solltest Du Dir Suche bei Google "SHARPDEVELOP" herunterladen. Da sparst Du Dir schonmal das ganze Kommandozeilen-Zeugs. ;-) Oder du hast Delphi 2005, das kann ja generell schon C#-Projekte erstellen.

Schau doch mal mit einem Reflector-Tool (Reflection ist IIRC bei Delphi dabei) in die erstellten Assemblies, ob Du da einen Grund siehst, weshalb das nicht klappt.

Wenn es nicht klappt, zeig mal bitte, wie Du die Assemblies in Delphi einbindest.

Grüße
Christian