Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[ASP.NET] C# omzetten naar VB probleem

Pagina: 1
Acties:
  • 308 views

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 17-11 06:32
Ik wil een code omzetten van C# naar VB, maar stuit op een paar problemen omdat ik C# niet helemaal begrijp. De code heb ik van een gevonden in een Blog via Google omdat ik op zoek was naar een manier om de asp.net Calender control vorm te geven met css, waarbij ik de default control style wil overriden.

De code waar het om gaat:
C#:
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
28
29
30
31
32
private class NonStyleWriter : HtmlTextWriter
{
  HtmlTextWriter _writer;

  public NonStyleWriter(HtmlTextWriter innerWriter) : base(innerWriter.InnerWriter)
  {
    _writer = innerWriter;
  }

  public override void AddAttribute(HtmlTextWriterAttribute key, string value)
  {
    _writer.AddAttribute(key, value);
  }
  // Passthrough all other methods

  public override void AddStyleAttribute(HtmlTextWriterStyle key, string value)
  {
    // Do nothing here. We don't want style attributes!
  }
  public override void AddStyleAttribute(string name, string value)
  {
    // Do nothing here. We don't want style attributes!
  }
  public override void WriteStyleAttribute(string name, string value)
  {
    // Do nothing here. We don't want style attributes!
  }
  public override void WriteStyleAttribute(string name, string value, bool fEncode)
  {
    // Do nothing here. We don't want style attributes!
  }
}

Ik heb tot zover dit:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Class NonStyleWriter
    Inherits HtmlTextWriter

    Dim _writer As HtmlTextWriter

    public sub NonStyleWriter( innerWriter as HtmlTextWriter) : mybase(innerWriter.InnerWriter)
        _writer = innerWriter
    end sub

    Public Overrides Sub AddAttribute(ByVal key As HtmlTextWriterAttribute, ByVal value As String)
        _writer.AddAttribute(key, value)
    End Sub

    Public Overrides Sub AddStyleAttribute(ByVal name As String, ByVal value As String)
        ' Do nothing here. We don't want style attributes!
    End Sub

    Public Overrides Sub WriteStyleAttribute(ByVal name As String, ByVal value As String)
        ' Do nothing here. We don't want style attributes!
    End Sub

End Class

Het eerste probleem is het omzetten van C# regel 5. Dit is waarschijnlijk geen sub, maar wat het wel is en hoe ik dat omzet weet ik niet.

Het tweede probleem is dat de private class een foutmelding geeft namelijk : Types declared private must be in another type

Het derde probleem is dat in de C# een aantal voids meerdere keren met dezelfde naam voorkomen met verschillende parameters. Dit pikt VB niet...

Wie kan mij verder helpen?

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
Die 'subs' moeten geen subs maar functions zijn geloof ik (maar het is al een hele tijd gelede dat ik iets met VB gedaan heb, en dat was nog vb6 en niet .net)

Visual Basic .NET:
1
2
3
Public Function CreateNonStyleWriter(innerWriter as HtmlTextWriter) As NonStyleWriter
{
}


En ik denk dat je ook functions kunt maken met verschillende overloads (de parameters). Als dat niet kan dan moet je even een struct of object maken waar ze allemaal wel in passen. En dan via een if statement achterhalen welk stuk code je nodig hebt.

Succes!

~ Mijn prog blog!


  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 10:42
Het eerste probleem is het omzetten van C# regel 5. Dit is waarschijnlijk geen sub, maar wat het wel is en hoe ik dat omzet weet ik niet.
C# regel 5 is een constructor, dat werkt in VB.NET net iets anders (sub new geloof ik, maar dat kun je vast zelf wel vinden)
Het tweede probleem is dat de private class een foutmelding geeft namelijk : Types declared private must be in another type
De foutmelding lijkt me vrij duidelijk?
Het derde probleem is dat in de C# een aantal voids meerdere keren met dezelfde naam voorkomen met verschillende parameters. Dit pikt VB niet...
Dat heet method overloading, kan ook in VB.net maar dan net iets anders (kijk eens naar Overloads keyword)
Wie kan mij verder helpen?
Ik denk dat je als je een beetje googled er wel uit kan komen.

Er zijn overigens ook tools die C# naar VB.NET kunnen omzetten en andersom, misschien handig om eens te bekijken als je grote hoeveelheden code om wil zetten.

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
Dat is inderdaad Public Sub New(...); in vb.net.

Verder kan je hier ( http://www.xtremevbtalk.com/showthread.php?p=699139 ) vinden hoe je overloading doet in VB. Maar dit had je eigenlijk zelf moeten opzoeken ;). (achja ik verveel me even :P )

[ Voor 67% gewijzigd door roy-t op 30-08-2008 14:45 ]

~ Mijn prog blog!


  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 10:42
roy-t schreef op zaterdag 30 augustus 2008 @ 14:35:
Die 'subs' moeten geen subs maar functions zijn geloof ik (maar het is al een hele tijd gelede dat ik iets met VB gedaan heb, en dat was nog vb6 en niet .net)

Visual Basic .NET:
1
2
3
Public Function CreateNonStyleWriter(innerWriter as HtmlTextWriter) As NonStyleWriter
{
}


En ik denk dat je ook functions kunt maken met verschillende overloads (de parameters). Als dat niet kan dan moet je even een struct of object maken waar ze allemaal wel in passen. En dan via een if statement achterhalen welk stuk code je nodig hebt.

Succes!
Voor mij is VB.NET ook al even geleden, maar volgens mij is het enige verschil tussen een sub en een function in VB.NET dat een sub niks terug kan geven (dus per definitie void) en een function wel.

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

Snake

Los Angeles, CA, USA

Daspeed schreef op zaterdag 30 augustus 2008 @ 14:45:
[...]

Voor mij is VB.NET ook al even geleden, maar volgens mij is het enige verschil tussen een sub en een function in VB.NET dat een sub niks terug kan geven (dus per definitie void) en een function wel.
Jawel, via in en out bij de argumenten.

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


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
Daspeed schreef op zaterdag 30 augustus 2008 @ 14:45:
[...]

Voor mij is VB.NET ook al even geleden, maar volgens mij is het enige verschil tussen een sub en een function in VB.NET dat een sub niks terug kan geven (dus per definitie void) en een function wel.
Ja ok, maar dan heeft hij hier functions nodig ;).

@ hierboven.

Via en in en out is wel een beetje lelijk, deze constructie kun je in C# ook gebruiken maar is alleen handig als een method meer dan 1 object moet teruggeven en je even geen zin had om een struct te maken :).

~ Mijn prog blog!


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

Snake

Los Angeles, CA, USA

roy-t schreef op zaterdag 30 augustus 2008 @ 14:46:
[...]


Ja ok, maar dan heeft hij hier functions nodig ;).

@ hierboven.

Via en in en out is wel een beetje lelijk, deze constructie kun je in C# ook gebruiken maar is alleen handig als een method meer dan 1 object moet teruggeven en je even geen zin had om een struct te maken :).
True, ik zei het ook maar voor de compleetheid ;)

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


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

Snake

Los Angeles, CA, USA

@TS: is het een innerclass? Want een gewone class kan echt niet private zijn.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Public Class NonStyleWriter
    Inherits HtmlTextWriter

    Private _writer As HtmlTextWriter

    Public Sub New(ByVal innerWriter As HtmlTextWriter)
        MyBase.New(innerWriter.InnerWriter)
    End Sub


    Public Overrides Sub AddAttribute(ByVal key As HtmlTextWriterAttribute, ByVal value As String)
        _writer.AddAttribute(key, value)
    End Sub

    Public Overrides Sub AddStyleAttribute(ByVal name As String, ByVal value As String)
        ' Do nothing here. We don't want style attributes!
    End Sub

    Public Overrides Sub WriteStyleAttribute(ByVal name As String, ByVal value As String)
        ' Do nothing here. We don't want style attributes!
    End Sub
End Class

This should do.

Ook had je wat kunnen lezen over VB.NET en constructors, en inheritance van constructors, dan had je er zelf ook wel uitgekomen.

[ Voor 7% gewijzigd door Snake op 30-08-2008 14:58 ]

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


  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 17-11 06:32
Bedankt voor de reacties, ik heb nu een C# -> VB converter gebruikt (Stom dat ik daar niet op kwam |:( ) en heb de code werkend gekregen...

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


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

Snake

Los Angeles, CA, USA

Swerfer schreef op zaterdag 30 augustus 2008 @ 14:58:
Bedankt voor de reacties, ik heb nu een C# -> VB converter gebruikt (Stom dat ik daar niet op kwam |:( ) en heb de code werkend gekregen...
Wat leer je daar nu bij?

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


  • whoami
  • Registratie: December 2000
  • Laatst online: 10:22
Een beetje laat, maar laat ons eerlijk zijn .... Met een beetje opzoekwerk had je wel zelf kunnen uitvissen wat die 'method' op regel 5 in je C# code nu precies was. (Desnoods haal je er een C#tutorial bij ... ). Dan had je ook gevonden dat het een constructor was, en kon je dit zelf ook wel makkelijk gaan vertalen.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.