Konvertierung von VB in C#

26/01/2009 - 12:05 von Markus Broy | Report spam
Hallo zusammen,

gewöhnlich programmiere ich weitgehend in Visual Basic, habe jetzt jedoch
ein C#-Projekt. Und trotz entsprechender Online-Konvertierungs-Tools und
Beschreibungen im Web bleiben für mich als "alter Visual Basicer" ein paar
Probleme:

In VB nutze ich immer eine abstrakte Klasse vom Typ System.Web.UI.Page, um
auf stàndig wiederkehrende Objekte zugreifen zu können. Die Seite sieht wie
folgt aus (verkürzt):

******************* Code VB *****************

Public MustInherit Class clsTemplatePage

Inherits System.Web.UI.Page

Dim obj As New clsCrypter
Public Cnn As New
SqlConnection(obj.Decrypt(ConfigurationManager.AppSettings("SQLConnection")))
Public Cmd As New SqlCommand("", Cnn)


Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Call Start()
End Sub

Protected MustOverride Sub Start()


Transferiere ich das mit meinen (etwas eingeschrànkten) Kenntnissen in C#,
wird einiges angemeckert:

******************* Code C# *****************

public abstract class clsTemplatePage : System.Web.UI.Page
{

public clsCrypter obj = new clsCrypter();
public SqlConnection Cnn = new
SqlConnection(obj.Decrypt(System.Configuration.ConfigurationManager.AppSettings("SQLConnection")));
public SqlCommand Cmd = new SqlCommand("",Cnn);

protected void Page_Load(object sender, EventArgs e)
{
Start();
}

protected abstract void Start();
}

******************* Ende Code *****************


Zum einen kann ich in den Zeilen, in denen ich die SqlConnection bzw. den
SqlCommand instanziiere, beim Aufruf des Konstrukters nicht auf die zuvor
deklarierten Objekte zugreifen. Es wird "obj" mit dem Hinweis "Ein
Feldinitialisierer kann nicht auf das nicht statische Feld bzw. die nicht
statische Methode oder Eigenschaft clsTemplatePage.obj verweisen." und
"ConfigurationManager" mit dem Hinweis "Der nicht aufrufbare Member
"System.Configuration.ConfigurationManager.AppSettings" kann nicht wie eine
Methode verwendet werden." angemeckert.

Und bei der Methode Page_Load wird der Typ EventArgs des Arguments e
angemeckert, obwohl der Namespace System per using importiert wurde.

Würde mich freuen, wenn mir hier jemand ein bisschen Nachhilfe in C# geben
könnte.

Danke!

Gruß

Markus
 

Lesen sie die antworten

#1 Heinrich Moser
26/01/2009 - 12:45 | Warnen spam
Hi!

"Markus Broy" writes:
Zum einen kann ich in den Zeilen, in denen ich die SqlConnection bzw. den
SqlCommand instanziiere, beim Aufruf des Konstrukters nicht auf die zuvor
deklarierten Objekte zugreifen. Es wird "obj" mit dem Hinweis "Ein
Feldinitialisierer kann nicht auf das nicht statische Feld bzw. die nicht
statische Methode oder Eigenschaft clsTemplatePage.obj verweisen."



Verschiebe die Initialisierung in den Konstruktor der Klasse (lass die
Deklaration aber außerhalb).

und "ConfigurationManager" mit dem Hinweis "Der nicht aufrufbare
Member "System.Configuration.ConfigurationManager.AppSettings" kann
nicht wie eine Methode verwendet werden." angemeckert.



Indexer werden in C# mit [eckigen] statt mit (runden) Klammern
angesprochen.

Und bei der Methode Page_Load wird der Typ EventArgs des Arguments e
angemeckert, obwohl der Namespace System per using importiert wurde.



Da muss ich passen (habe gerade kein C# zum Probieren bei der Hand),
aber als Workaround kannst du es ja als System.EventArgs deklarieren.

LG,
Heinzi

Ähnliche fragen