当我在C#类库中有以下代码时,它完全打破了库中的所有其他内容。
namespace DesktopOCA.Infastructure
{
public class NHibernateHelper
{
private static ISessionFactory _sessionFactory;
}
}
例如,这也在该项目中:
namespace DesktopOCA.Infastructure
{
public static class RegionNames
{
public const string MainRegion = "MainRegion";
}
}
当我不包括
时private static ISessionFactory _sessionFactory;
排除我的解决方案中的所有其他内容可以看到RegionNames.MainRegion。但是只要我对ISessionFactory进行任何引用,它就会中断。那个特定的类库仍然编译得很好。我可以在项目的其他部分添加它作为参考,但它就像没有任何东西。
我收到错误
Error 40 The name 'RegionNames' does not exist in the current context
这里真的很感激任何帮助,这对我来说似乎很奇怪。
答案 0 :(得分:1)
静态类只能包含静态成员。将static关键字从RegionNames
类移动到MainRegion成员或完全摆脱静态。这取决于你在该课程中做了什么。
有关详细信息,请参阅MSDN文档:http://msdn.microsoft.com/en-us/library/79b3xss3(VS.80).aspx
编辑:另外,如果你想将MainRegion保持为静态,你必须将const改为readonly。
edit2:我今天使用Reflector来查看System.Data.Common.ADP并注意到const
没有静态类中的static关键字。上面链接的最后一节“静态成员”说:
然而,它并没有说明它是否在静态类中起作用并且在其措辞上是相当模糊的:不能有静态成员,const不能是静态的,但是const可以被访问,好像它是静态的一样。 / p>虽然字段不能声明为 static const,一个const字段 其行为基本上是静态的。它 属于类型,而不属于实例 这种类型。因此,const字段 可以通过使用相同的方式访问 ClassName.MemberName表示法 用于静态字段。没有对象 实例是必需的。