![](/img/trans.png)
[英]Visual C# Express 2010 Importing a project from Visual Studio
[英]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.