让我说我有班级狗:
public class Dog {
public String Breed { get; set; }
public String Color { get; set; }
...
}
一类动物:
public class Animals {
public Dog[] Dogs { get; set; }
public Dog[] GetDogs() {
...
return Dogs;
}
...
}
上面的类在我的类库中,我添加它作为我的项目的参考..一切正常但我想要的是谁使用这个库不应该使用类Dog
,我的意思是他不应该做Dog dog = new Dog();
之类的事情。我尝试将其设为内部,但是,我还必须在Animals
类中编写内部,如果我这样做,我就无法使用GetDogs()方法
有什么建议吗?
答案 0 :(得分:5)
为Dog类创建内部构造函数。 internal Dog(){}
。然后只有该程序集可以创建new Dog()
,但每个人都可以使用Dog类。
答案 1 :(得分:3)
将Dog
更改为
public class Dog
{
internal Dog()
{
}
public String Breed { get; set; }
public String Color { get; set; }
}
然后
Dog d = new Dog();
将产生
'Dog'类型没有定义构造函数。无法访问内部 建设者'狗'在这里。
答案 2 :(得分:1)
如果你想归还狗,你必须保持公开。 如果你想阻止在一个程序集之外创建Dogs - 让他的构造函数内部。
另一种选择是使用接口。
答案 3 :(得分:1)
如果动物是唯一使用狗的类,那么你可以在动物中使狗成为嵌套的私人类,因此只能在动物身上使用。但是你为什么要这样做呢?
答案 4 :(得分:1)
您可以将Dog
类设为public
,将其默认构造函数设为internal
:
public class Dog
{
internal Dog() {}
}
在默认的contstructor上使用internal
将限制从程序集外部的代码初始化它。