繁体   English   中英

在 Visual Studio 2010/C# 中引用其他项目中定义的类型

[英]Referring a type defined in other project in Visual Studio 2010/C#

我有一个通过子类化 Type 的 Fixed Point 类型(请参阅这篇文章)。 我可以将这个项目命名为 a.dll。

namespace System
{
public class FixedPointDataType : Type
{
    public Boolean Signed { get; set; }
    public int Width { get; set; }
    public int IntegerWidth { get; set; }
    public FixedPointDataType(Boolean signed = false, int width = 16, int integerWidth = 8)
    {
        Signed = signed;
        Width = width;
        IntegerWidth = integerWidth;
    }
...

我有另一个项目 b.dll,它使用 a.dll 中的System.FixedPointDataType 在项目b中引用a.dll后,当我尝试编译项目b中的文件abc.cs时,出现此错误。

Error   2   'System.FixedPointDataType' is inaccessible due to its protection level 
abc.cs

可能有什么问题?

添加

我需要添加public并使用命名空间给出全名 - System.FixedPointDataType 即使在修改后我也得到了错误,但是当我重建整个解决方案时,错误被删除了。 感谢您的评论和回答。

您的 class 未声明为public 或者是在您更改帖子并重建项目之前。

但我支持前面的评论,即您应该将Type子类化或将成员添加到命名空间System

如果这两个项目在同一个解决方案中,请确保添加对项目的引用,而不仅仅是 DLL,即项目的 output。 如果您不添加对项目的引用,VS 将不知道构建解决方案的顺序,并且您可能引用了过时的版本。

您的另一篇文章没有告诉我们您为 FixedPoint class 使用的命名空间。

我建议您需要一个 Using 语句或完全限定类型名称。

编辑:哦,我的时机不好!

如果您上面描述的代码是准确的(确保您没有从 class 中丢失“public”?),也许这是您使用 System 命名空间的问题,虽然我没有证据,可能是个特例。

看看如果你改变命名空间会发生什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM