2016-08-29 2 views
0

Das mag wie eine Anfängerfrage scheinen, und es ist irgendwie, da dies meine erste große C# -Projektkonvertierung ist. Derzeit konvertiere ich ein großes Projekt von vb.net nach C#, ich verstehe C# Syntax ziemlich gut und die Konvertierung läuft ziemlich reibungslos. Meine einzige Frage ist - in vb.net ich als eine solche Klasse mit der Import-Anweisung aussetzen könnte:kann keine Klasse in c offenbaren #

Imports DataAccessLayer.DataAccess 

und sagen, dass es ein Verfahren GetDataTable in der Data Access-Klasse genannt ist, kann ich nenne es einfach GetDataTable unter Verwendung von (params)

Jetzt, mit C#, kann ich nur

Using DataAccessLayer; 

und kann die Data Access-Klasse aus, da nur die DataAccessLayer Namespace und haben DataAccess.GetDataTable (params) zu tun, die offensichtlich hinzufügen wird eine Menge zusätzlichen Code für das Projekt, wenn ich das irgendwo machen muss.

Gibt es eine Möglichkeit, die Klasse und nicht nur den Namespace verfügbar zu machen? Das ist mein Konstruktor

namespace DataAccessLayer 
{ 
    public class DataAccess 
    { 
    } 
} 

Vielen Dank im Voraus!

+3

Haben Sie versucht, tun 'DataAccessLayer.DataAccess verwenden;'? – ProgrammingDude

+0

Ja, so war mein Code in vb.net und es funktionierte gut. es wird mir nicht erlauben, den .DataAccess hinzuzufügen, sagt, dass es nicht existiert. –

+0

Was wäre der Vorteil des Aufrufs von 'GetDataTable' ohne die Typkennung? Sie können es auch nur mit einer privaten/öffentlichen Methode verwechseln –

Antwort

5

Wenn Sie C# v6 oder höher verwenden, können Sie import a static class wie folgt aus:

using static Namespace.StaticClass; 

So können Sie das gleiche für Ihre Klasse tun:

using static DataAccessLayer.DataAccess; 
+0

yep, fand es heraus, nachdem ich das geschrieben. Es ist eine ganz neue Welt, die zu C# konvertiert, wie ich sagte, ich benutze Java und Javascript seit Jahren, also bin ich sehr vertraut mit der Syntax, aber einige der subtilen Dinge entgehen mir –

2

C# 6 unterstützt dies als

using static DataAccessLayer.DataAccess; 
0

Ich kann meine eigene Frage beantworten, für jeden anderen, der auf dieses Problem stößt - ich habe

using static DataAccessLayer.DataAccess; 

Hinzufügen der statischen hat es funktioniert.

1

Nach msdn hier können Sie nur statische Elemente eines Typs zugreifen, ohne den Zugang mit dem Typnamen wie folgt qualifizieren zu müssen:

statische System.Console verwendet wird;

using static System.Math; 
class Program 
{ 
    static void Main() 
    { 
     WriteLine(Sqrt(3*3 + 4*4)); 
    } 
} 

Sie können jedoch einen Alias ​​für einen Typ erstellen:

using Project = PC.MyCompany.Project; 
Verwandte Themen