我有一个公共课,我试图在另一个项目中引用它。它有一个构造函数:
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”的项目中 - 它需要更好的名称。
答案 0 :(得分:7)
您需要将struct
定义为public
。
public struct Vector { ... }
仅因为构造函数是公共的并不意味着类/结构也是公共的。
使用当前代码,struct
只能在包含程序集中访问,因为默认访问修饰符为internal
。然而,在该集会中,该类在任何地方都可见。