无法在c#中公开类

时间:2016-08-29 18:56:04

标签: c# asp.net vb.net

这可能看起来像是一个初学者问题,因为这是我的第一个大型c#项目转换。目前正在将一个大型项目从vb.net转换为c#,我对c#语法非常了解并且转换非常顺利。我的一个问题是 - 在vb.net中我可以使用import语句公开一个类:

Imports DataAccessLayer.DataAccess

并说在DataAccess类中有一个名为GetDataTable的方法,我可以通过使用GetDataTable(params)来调用它

现在,使用C#,我只能做

Using DataAccessLayer;

并且不能公开DataAccess类,只是DataAccessLayer命名空间,并且必须执行DataAccess.GetDataTable(params),如果我必须在任何地方执行此操作,这显然会为项目添加大量额外代码。< / p>

有没有办法公开类而不仅仅是命名空间?这是我的构造函数

namespace DataAccessLayer
{
    public class DataAccess
    {
    }
}

提前致谢!

4 个答案:

答案 0 :(得分:5)

如果您使用的是C#v6或更高版本,则import a static class可以这样:

- (void)userNotificationCenter:(UNUserNotificationCenter *)center
       willPresentNotification:(UNNotification *)notification
         withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
    NSLog(@"%@", notification.request.content.userInfo);
}

- (void)userNotificationCenter:(UNUserNotificationCenter *)center
didReceiveNotificationResponse:(UNNotificationResponse *)response
         withCompletionHandler:(void(^)())completionHandler {
    NSLog(@"%@", response.notification.request.content.userInfo);
}

所以你可以为你的班级做同样的事情:

using static Namespace.StaticClass;

答案 1 :(得分:2)

C#6支持这个

using static DataAccessLayer.DataAccess;

答案 2 :(得分:1)

根据msdn,您只能访问类型的静态成员,而无需使用类型名称限定访问权限,如下所示:

使用静态System.Console;

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

您可以为类型创建别名:

using Project = PC.MyCompany.Project;

答案 3 :(得分:0)

我可以回答我自己的问题,对于遇到这个问题的其他人 - 我用过

using static DataAccessLayer.DataAccess;

添加静态使其工作。