我将此代码放在一个文件中:
namespace Japanese
{
public partial class PhrasesPage : ContentPage
{
PhrasesFrame phrasesFrame = new PhrasesFrame();
此代码在另一个文件中:
namespace Japanese.Views.Phrases
{
public partial class PhrasesPage
{
public void setTimeInterval()
{
phrasesFrame // can't access
我希望能够在第二个文件中访问phraseFrame,但似乎不可能。任何人都可以给我建议我可以做什么,所以我可以在另一个文件中访问它,这也是一个部分类。还有一个问题。我应该使用我的部分类继承所有文件中的ContentPage,还是仅仅一个文件?
答案 0 :(得分:4)
您可以轻松访问其中部分类的所有成员,甚至是私有。
public partial class Test
{
private int x = 5;
}
public partial class Test
{
public void Run()
{
Console.WriteLine(x); // outputs 5
}
}
但是,您使用不当。由于您的类位于两个不同的名称空间中,因此编译器将它们视为两个不同的类:
Japanese.PhrasesPage
Japanese.Views.Phrases.PhrasesPage
如果要使其像分段类一样工作,则需要将它们放在一个命名空间中:
// 1
namespace Japanese.Views.Phrases
{
public partial class PhrasesPage : ContentPage
{
PhrasesFrame phrasesFrame = new PhrasesFrame();
// 2
namespace Japanese.Views.Phrases
{
public partial class PhrasesPage
{
public void setTimeInterval()
{
phrasesFrame // CAN access
然而,对这些班级的责任进行一些分析 既然你把它们放在不同的命名空间中并从不同的类继承,那么它们可能有不同的含义,需要按设计分开吗?
您总是可以通过合成或聚合使类彼此相关,而不是使其成为局部。部分类不是很方便,通常用于代码生成场景。
对我而言,setTimeInterval
听起来与“短语”和“页面”无关。
答案 1 :(得分:3)
由于命名空间不同,它们被视为两个不同的类。您应该为它们使用公共名称空间,如下所示:
namespace Japanese
{
public partial class PhrasesPage : ContentPage
{
PhrasesFrame phrasesFrame = new PhrasesFrame();
//...
}
}
namespace Japanese
{
public partial class PhrasesPage
{
public void setTimeInterval()
{
phrasesFrame // accessible! :)
}
}
}