2015-11-24 23 views
1

我想让我的代码更容易使用,这就是我正在尝试的。访问嵌套类

public class Engine 
{ 
    public class FileMgr 
    { 

    } 

} 

我可以访问这个像Engine.FileMgr那好吧,但。

我想我在分离式文件中的类,所以我希望它这样

public class Engine 
{ 
    public static FileMgr fileMgr; 

} 

public class FileMgr 
{ 

} 

,但我不能再访问它像Engine.FileMgr

有没有更好的方法来做到这一点?

+1

对不起,但是如何使用一个类名,就好像它是名称空间的一部分,它可以让事情更容易阅读? –

+0

我看不到这一点。你现在可以像'FileMgr'那样访问它,而不需要'Engine.'部分。 – Nyerguds

+0

@Nyerguds OP想要访问FileMgr类的fileMgr属性而不是类本身...阅读问题。顺便说一句你应该能够调用Enging.fileMgr,但你需要实例化它! – MajkeloDev

回答

1

您可以使Engine类变为partial,并将FileMgr的详细信息放入其中。

public partial class Engine 
{ 
    // Engine stuff here. 
} 

public partial class Engine 
{ 
    public class FileMgr 
    { 

    } 
} 
+0

这根本不可能让这个黑客足够下来。你已经采取了一个坏主意(通过公开一个子类来公开一个类的内部运作),然后你介绍了一个不必要的部分类的复杂性。这不好。 –

+0

@DavidArno OP没有问是好还是坏。 OP问及如何去做。我向他/她展示了如何去做。 – CodingMadeEasy

1

父类型Engine现在是从Engine.FileMgr类的名称中去掉,因为它不再是一个子类的Engine。这就像它应该是。只需从类型名称中删除Engine.,然后设置。

如果你确实真的想要前缀类名,请在两个文件中使用partialEngine

// Engine.cs 
public partial class Engine 
{ 
} 

// Engine.FileMgr.cs 
public partial class Engine 
{ 
    public class FileMgr 
    { 

    } 
} 
+0

哈哈哈哈。打我一秒钟:)。 – CodingMadeEasy

+2

,因为你写了更多。;) –

+0

根本不可能对这个黑客足够下注。你已经采取了一个坏主意(通过公开一个子类来公开一个类的内部运作),然后你介绍了一个不必要的部分类的复杂性。这不好。 –

-1

我不确定这是个好主意。

为什么不简单地让他们在同一个命名空间中的2个不同的类?

反正你可以做你想做的与partial关键字

这里一个简单的例子

public partial class Engine 
{ 
    //your Engine definitions here 
} 

,并在另一个文件

public partial class Engine 
{ 
    public class FileMgr 
    { 
     //Your FileMgr code here 
    } 
} 

但要知道,很多人会恨你如果你在生产代码中这样做没有任何好处,因为它在这里出现

+0

这简直不可能对这个黑客足够的低估。你已经采取了一个坏主意(通过公开一个子类来公开一个类的内部运作),然后你介绍了一个不必要的部分类的复杂性。这不好。 –

+0

@DavidArno我知道这很糟糕,这正是我在最后一句话中所说的......我真的不明白这比其他答案更糟糕吗? –

1

Engine.fileMgr现在是一个字段,不再是一个类型。所以你应该这样使用它:

FileMgr fm = Engine.fileMgr;