【问题标题】:Partial class methods/properties not visible from another project部分类方法/属性在另一个项目中不可见
【发布时间】:2013-10-01 05:11:05
【问题描述】:

我有一个实体类(自动生成),如下所示:

namespace FicServerData
{
    using System;
    using System.Collections.Generic;

    public partial class Snapshot
    {
        public Snapshot()
        {
            this.ComponentQuotes = new HashSet<SnapshotPart>();
        }

        public int Id { get; set; }
        public System.DateTime Time { get; set; }
        public string Machine { get; set; }
        public string AppName { get; set; }

        public virtual ICollection<SnapshotPart> ComponentQuotes { get; set; }
    }
}

然后我写了一个实用的部分类,看起来像这样:

namespace FicServerData
{
    public partial class Snapshot
    {
        public IEnumerable<Quote> DerivedQuotes
        {
            get
            {
                ...
            }
        }
    }
}

所以它们都是同一个项目中的文件,并且您可以在同一个命名空间中看到。现在在这个项目中,我可以访问我添加的属性没有问题。我无法从引用它的项目中访问它:我只能访问 VS 为我创建的实体类。 我在这里错过了什么?

【问题讨论】:

    标签: c# .net partial-classes


    【解决方案1】:

    您不能跨项目访问部分类。部分类的“部分”被编译为单个程序集中的单个类。

    【讨论】:

    • 如果编译成一个类,不是所有的方法/道具都是可见的吗?
    • 这是某种奇怪的 VS 行为。在重建所有东西后突然它工作正常。奇怪。
    • @JarekMitek 我认为您的 DLL 之前只是未能构建,而您在添加自己的部分类之前从那里获得了它的旧副本。
    【解决方案2】:

    对我来说,解决方法是重新启动 Visual Studio。我使用的是 Professional 2017 版本。

    【讨论】:

      【解决方案3】:

      我遇到了这个问题。我发现我的消费项目是通过程序集引用而不是项目引用来引用源项目。此外,被引用的程序集存储在驱动器文件夹中,并且该驱动器文件夹被添加为使用项目中的引用路径。如您所料,我在源项目中的更新正在编译,但我引用的程序集没有。我删除了我的消费项目中的引用并将其重新添加为项目引用,等等!问题解决了!

      不要问我为什么我的消费项目使用引用路径从同一解决方案中的另一个项目访问已编译的程序集。请不要。

      【讨论】:

        猜你喜欢
        • 2021-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-16
        • 2019-08-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多