公共类由于其保护级别而无法访问

时间:2016-01-27 14:29:23

标签: c#

我有一个公共课,我试图在另一个项目中引用它。它有一个构造函数:

namespace Stuff
{
    struct Vector
    {
        public double x { get; set; }
        public double y { get; set; }
        public double z { get; set; }

        public Vector (double ex, double why, double zee) 
        {
            this.x = ex;
            this.y = why;
            this.z = zee;
        }

...

我一直收到inaccessible due to protection level错误。

这就是我在另一个项目中引用它的方式:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Stuff;

namespace ProjectileMotion
{
    class Projectile
    {
        private Vector acceleration = new Vector(0, 0, -9.8); //the acceleration is a vector now.

...

“Vector”类位于一个名为“stuff”的项目中 - 它需要更好的名称。

1 个答案:

答案 0 :(得分:7)

您需要将struct定义为public

public struct Vector { ... }

仅因为构造函数是公共的并不意味着类/结构也是公共的。

使用当前代码,struct只能在包含程序集中访问,因为默认访问修饰符为internal。然而,在该集会中,该类在任何地方都可见。