Avatar billede dingemann Novice
25. juni 2006 - 13:03 Der er 16 kommentarer og
1 løsning

.NET 1.1 > C#-klasse i VB.NET-klasse

okay... jeg troede faktisk at det var forholdsvist simpelt at implementere en C#-klasse i et VB.NET-projekt og modsat... men jeg kan tilsyneladende ikke bare gøre det som hvis det fx havde været to VB.NET-klasser som chit-chatter lidt med hinanden og så til sidst aflevere et resultat til en form.

Helt grundlæggende er mit problem at jeg har et VB.NET-projekt med en vb-klasse og en C#-klasse. C#-klassen returnere en værdi som smides over i VB.NET-klassen og den bearbejder resultatet og smider det videre tilbage til nogle form-objekter (labels etc). Problemet er så bare at binde C#-klassen med VB.NET-klassen.

Havde det været to VB.NET-klasser havde jeg tilføjet referencen og brugt en

Dim objClassA = New class_a.Class1

... i ClassB

Men det er tilsyneladende ikke sådan man gør hvis ClassA er et C#-project -

Har jeg fået noget galt i halsen eller?


// peter
Avatar billede nielle Nybegynder
25. juni 2006 - 15:15 #1
Visual Studio 2003 har tre forskellige niveauer:

Solution
    Project
        Class(es)

Inden for hvert _projekt_ kan du ikke sammenblande kode skrevet i C# og i VB.Net. Imidlertid kan du sagtens oprette et projekt, som er skrevet i C#, og et projekt som er skrevet i VB.NET, og så bruge den inden for sammen _solution_.

For at gøre dette højreklikker du på "Solution" i Solution Exploeren ude i venstre side af dit vindue. Dermed kommer der en kontekstmenu frem, og i denne vælger du "Add" og derefter "Net Project".

Da C# kodenen skal bruges af VB.Net-koden er det bedst at vælge C#-projektet som et "Class Library" projekte (en DLL).
Avatar billede dingemann Novice
25. juni 2006 - 15:31 #2
det er præcis også det jeg har gjort... jeg har en solution med tre projects i:

* en visual form - VB.NET
* en class i VB.NET
* en class i C#

VB.NET-klassen skal rive i C#-klassen, og sende det til den visuelle form.
Det er imidlertid ikke relevant hvordan jeg får spyttet dataen til den visuelle form - nærmere hvordan jeg får adgang til C#-klassen fra VB.NET-klassen
Avatar billede nielle Nybegynder
25. juni 2006 - 15:41 #3
Da du oprettede C#-projketet skete dette i et namespace.

I dit VB.Net projekt skal du importere dette. Dette gøres ved at du i toppen skriver:

Imports NamespacetFraCSharpProjektet
Avatar billede dingemann Novice
25. juni 2006 - 15:49 #4
okay... jeg troede jeg skulle gøre det som jeg ville gøre det med et VB.NET - lave reference og så lave en

Dim Tis = New Tis.Class1


...jeg prøver lige
Avatar billede nielle Nybegynder
25. juni 2006 - 16:27 #5
Hvis dit navmespace er "Tis" så kan du også gøre det sådan her:

Dim dinKlasseVariabel As Tis.Class = New Tis.Class1()
Avatar billede nielle Nybegynder
25. juni 2006 - 16:28 #6
Pointen med at have:

Imports Tis

- i toppen af din kode er at du kan skrive dette lidt simplere

Dim dinKlasseVariabel As Class1 = New Class1()
Avatar billede dingemann Novice
25. juni 2006 - 16:56 #7
nu har jeg prøvet lidt og jeg kan ikke få stille namespacet til rådighed i VB-klassen selvom jeg har tilføjet referencen... udover at tilføje referencen så er der da ikke mere jeg skal gøre?
Avatar billede dingemann Novice
25. juni 2006 - 17:02 #8
aaah well... nu tror jeg at jeg har den... jeg er bare dårlig til C# :) - jeg vender lige tilbage så
Avatar billede dingemann Novice
25. juni 2006 - 17:03 #9
okay... det virker faktisk nu... vil du ha point?
Avatar billede nielle Nybegynder
25. juni 2006 - 17:06 #10
Svar :^)
Avatar billede dingemann Novice
25. juni 2006 - 17:07 #11
okay... off the record - kender du den baglænse vej? altså i VB bruger man import for at importere namespacet i C# - hvordan gør man for at importere VB i C#?
Avatar billede nielle Nybegynder
25. juni 2006 - 17:07 #12
Hvis negge projekter er under samme solution, er der faktisk ikke behov for at du selv gør noget under references.
Avatar billede dingemann Novice
25. juni 2006 - 17:07 #13
okay til det med reference... jeg mente heller ikke at jeg plejede at gøre det :)
Avatar billede nielle Nybegynder
25. juni 2006 - 17:16 #14
25/06-2006 17:07:28> Den bliver jeg lige nødt til at vende tilbage med i morgen.
Avatar billede dingemann Novice
25. juni 2006 - 17:30 #15
okay... men du skal nok få point for den... :)
Avatar billede dingemann Novice
25. juni 2006 - 20:22 #16
problemet er løst med den baglænse version :) men tak for hjælpen generelt...
Avatar billede nielle Nybegynder
25. juni 2006 - 20:28 #17
Ok, men hvad var svaret så?

Jeg er sikker på at det er simpelt, men jeg kunne ikke lige få det til at virke. Og derfor var min plan at kigge i et projekt som jeg havde liggende på arbejdet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester