我有两个解决方案的项目 - 一个是图书馆,另一个是主要计划。 库中某个类的构造函数创建了很少的其他对象。不幸的是,当我在主项目中调用那个应该被创建的构造函数时是不可见的。有没有办法解决这个问题?
我在谈论的例子:
namespace Library
{
public class Foo
{
public Bar bar;
public Foo()
{
Bar bar = new Bar();
}
}
}
namespace Project1
{
class Program
{
static void Main(string[] args)
{
Foo foo = new Foo();
//bar is not accessible here
}
}
}
答案 0 :(得分:1)
您需要将Bar
对象分配给Foo
的某个成员:
namespace Library
{
public class Bar
{
// whatever inside
}
public class Foo
{
public Bar BarMember { get; private set; }
public Foo()
{
BarMember = new Bar();
}
}
}
namespace Project1
{
class Program
{
static void Main(string[] args)
{
Foo foo = new Foo();
// foo.BarMember is accessible here
}
}
}
<强>基本上强>
Bar
对象分配给Foo
的成员Bar
需要在两个项目的共同范围内声明 - 只需在Library
内声明它。它也必须是public
- 在项目之间共享。答案 1 :(得分:1)
您只是将bar
实例字段隐藏在Foo
的ctor中,因为您将bar
重新声明为本地变量(您应该有编译器警告)。< / p>
就这样做:
namespace Library
{
public class Foo
{
public Bar bar;
public Foo()
{
this.bar = new Bar();
}
}
}
答案 2 :(得分:1)
问题在于这一行
Bar bar = new Bar();
这是声明一个名为bar
的新局部变量,并为其分配新创建的值。这不会设置字段Foo.bar
,因为本地实际上会遮挡字段。为了设置字段,删除声明
bar = new Bar();
或者,如果您想要明确,可以使用this
this.bar = new Bar();
其中任何一个都会将字段Foo.bar
设置为新创建的值。然后,Foo