C# 引用Visual Studio 2010/C中其他项目中定义的类型#
通过子类化类型,我有一个固定点类型(请参阅)。我可以把这个项目命名为a.dllC# 引用Visual Studio 2010/C中其他项目中定义的类型#,c#,.net,visual-studio-2010,build,C#,.net,Visual Studio 2010,Build,通过子类化类型,我有一个固定点类型(请参阅)。我可以把这个项目命名为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(Boo
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
。即使在修改之后,我也会出现错误,但是当我重新构建整个解决方案时,错误被删除了。谢谢你的评论和回答。你的另一篇文章没有告诉我们你在FixedPoint类中使用了什么名称空间
我建议您需要一个Using语句或完全限定类型名
编辑:哦,我的时间安排不好
如果您上面描述的代码是准确的(确保您没有从类中丢失“public”),那么可能是因为您使用的是系统名称空间,虽然我没有证据,但这可能是一个特例
看看如果更改名称空间会发生什么。您的另一篇文章没有告诉我们您在FixedPoint类中使用了什么名称空间 我建议您需要一个Using语句或完全限定类型名 编辑:哦,我的时间安排不好 如果您上面描述的代码是准确的(确保您没有从类中丢失“public”),那么可能是因为您使用的是系统名称空间,虽然我没有证据,但这可能是一个特例
查看如果更改名称空间会发生什么情况。您的类未声明为
public
;或者是在您更改帖子并重建项目之前
但我支持前面的评论,即您不应将类型子类化
或将成员添加到命名空间系统
如果两个项目位于同一解决方案中,请确保添加对该项目的引用,而不仅仅是对作为项目输出的DLL的引用。如果您没有添加对项目的引用,VS将不知道构建解决方案的顺序,并且您可能引用了过时的版本。您的类未声明为“公共”;或者是在您更改帖子并重建项目之前 但我支持前面的评论,即您不应将
类型子类化
或将成员添加到命名空间系统
如果两个项目位于同一解决方案中,请确保添加对该项目的引用,而不仅仅是对作为项目输出的DLL的引用。如果您不向项目添加引用,VS将不知道构建解决方案的顺序,并且您可能引用的是过时的版本。您不应将
类型子类化。也不应该将类型添加到命名空间System
。也许可以列出解决子类化类型问题的实际代码。斯莱克斯:我知道,我也同意,但我认为临时测试可以。谢谢你的评论。我强烈要求你重新考虑你的设计决定。您可以在FixedPoint
和FixedPointDataType
中公开所需的所有功能,而不会污染系统或Type
。您不应将Type
子类化。也不应该将类型添加到命名空间System
。也许可以列出解决子类化类型问题的实际代码。斯莱克斯:我知道,我也同意,但我认为临时测试可以。谢谢你的评论。我强烈要求你重新考虑你的设计决定。您可以在FixedPoint
和FixedPointDataType
中公开所需的所有功能,而不会污染系统或Type
。