Eigene Klasse hinzufügen
-
Hallo Leute ich habe ein kleines Problem.
Ich benutze VS Express 2013.
Ich habe eine Klasse die etwa wie folgt aussieht :namespace CAdapt_List { class CTest { public void test(){ //do sth; } } }
Wie kann ich diese Klasse oder generell eine von mir erstelle Klasse nun in einem anderen Projekt verwenden ?
Ich habe jetzt einfach die .cs Datei in mein neues Projekt dazugefügt, aber wie kann ich jetzt auf Ctest zugreifen ?
-
Hallo,
das ist eigentlich recht einfach.
In der Klasse aus der du darauf zugreifen möchtest musst du eine Instanz deiner CTest Klasse erstellen.
Beispiel:
CAdapt_List.CTest test = new CAdapt_List.CTest(); test.test();
In dem Beispiel wird der Namespace explizit verwendet. - Soetwas macht aus meiner Sicht aber nur Sinn, wenn man Fremdkomponenten in einem Programm verwendet. Für verschiedene Namespaces die direkt zu einer Anwendung gehören bietet es sich eher an, die Namespaces im Kopf der *.cs-Datei zu definieren und dann nur noch über den Klassennamen Instanzen zu erstellen.
Beispiel:
namespace MeinTest.DataLayer { public class DataAccess { public DataSet GetData() { } } } /******************************************************/ using MeinTest.DataLayer; namespace MeinTest.BusinessLayer { public class MyLogic { private DataAccess _dataAccess; public void ExecuteMyLogic() { // irgendwelche Logik // .... DataSet data = _dataAccess.GetData(); // Verarbeitung der Daten // ... } } }
-
Ok, danke hat geklappt.
Noch eine andere Frage, gehört aber nicht zu diesem Thema.Wie kann ich ein objekt das in einem Try Block erstellt wird, ausserhalb des Try Blocks nutzen ?
try{ myXYZ() test = new myXYZ(); //.... }catch (Exception e){ // do sth. with e.... } //hier ist test nicht mehr gültig... damn! wenn ich es aber brauche ?
-
Hallo,
auch das ist nicht schwierig. - Allerdings solltest du dir eher ein Buch zu legen. Mir kommt es so vor, als würdest du hier einfach ins blaue los schreiben bzw. könnte es auch getrolle sein da ja z.B. Try-Catch-Blöcke bekannt sind.
Dennoch ein Beispiel, wo du auch durch probieren hättest drauf kommen können.
MyClass myObject = null; try { myObject = new MyClass(); //... } catch(Exception ex) { // ... } if(myObject != null) myObject.DoSomething();
-
MyClass myObject = null; try { myObject = new MyClass(); //... } catch(Exception ex) { // ... } if(myObject != null) myObject.DoSomething();
So war mir das Klar, allerdings wird ja hier myObject schon mal ausserhalb des Try Blocks angelegt.
-
Einen anderen weg wirst du nicht finden außer die Variable vor betreten des try-catch-Blockes zu definieren.
Wird die Variable im Try-Catch-Block erst definiert, ist sie auf Grund des tieferen Scopes außerhalb nicht mehr vorhanden. Damit will ich sagen: Du kannst von einem übergeordneten Scope nicht auf Variablen von untergeordneten Scopes zugreifen.
Was willst du überhaupt erreichen?