【问题标题】:NHibernate ISessionFactory breaks my assembly, why?NHibernate ISessionFactory 破坏了我的程序集,为什么?
【发布时间】:2010-08-26 21:27:16
【问题描述】:

当我的 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    

任何帮助都会非常感激,这对我来说真的很奇怪。

【问题讨论】:

  • 这听起来像是一种奇怪的“清理和重建”类型的情况。您是否尝试过使用 Reflector 查看类库 DLL?

标签: c# nhibernate


【解决方案1】:

静态类只能包含静态成员。要么将 static 关键字从 RegionNames 类移动到 MainRegion 成员,要么完全摆脱 static。这取决于或您在该课程上做什么。

有关详细信息,请参阅 MSDN 文档:http://msdn.microsoft.com/en-us/library/79b3xss3(VS.80).aspx

编辑:另外,如果要将 MainRegion 保持为静态,则必须将 const 更改为 readonly。

edit2:我今天使用 Reflector 查看 System.Data.Common.ADP 并注意到 const 在静态类中没有 static 关键字。上述链接的最后一部分“静态成员”说:

虽然一个字段不能声明为 静态常量,一个常量字段是 其行为本质上是静态的。它 属于类型,不属于实例 的类型。因此,常量字段 可以通过使用相同的访问 ClassName.MemberName 表示法是 用于静态字段。没有对象 实例是必需的。

然而,它并没有说明这在静态类中是否有效,并且在其措辞中相当模糊:不能有静态成员,const 不能是静态的,但可以像静态一样访问 const。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-15
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    相关资源
    最近更新 更多