MC.*_*MC. 5 .net nested namespaces nested-class
我很好奇在涉及.NET中嵌套类型的某些场景时,什么是好的做法.
假设您有一个Wheel类,Wheel类包含Bearing对象.Bearing对象仅在Wheel中有意义,并且您不希望允许它独立创建,因此将Bearing类嵌套在Wheel对象中是有意义的.但是,假设您有一个场景,您现在需要读取Wheel类之外的Wheel.Bearings属性.现在需要将嵌套的Bearing类设为public.
在这种情况下,最好的选择是什么?
1 - 创建嵌套在Wheel类
2中的公共Bearing类- 创建一个独立的Bearing类,在其构造函数中获取Wheel对象
3 - 创建Wheel命名空间并在此命名空间内创建一个独立的Bearing类.
4 - 别的什么?
更新:我正在更新这个更多的细节,并反映到目前为止的一些建议.ClassParent是父类,ClassChild是子类.ClassChild总是ClassParent的一个孩子,单独存在是没有意义的.问题是ClassChild有一些需要公开暴露的属性,而所有其他属性只能从ClassParent调用.一个示例是ClassChild.Delete函数,该函数不应公开公开,因为它只应从ClassParent调用,因为ClassParent需要执行适当的清理和修改.
在审查了这些建议之后,我提出的设计对我来说看起来有些不洁,所以我想我会要求输入.我有:
public class Parent
{
ChildNested childObj
public DeleteChild()
{
//expose this method publically
childObj.DeleteChild()
//other functionality
}
public Child GetChild()
{
//expose Child, not ChildNested publically
return childObj
}
private class ChildNested:Child
{
public Child()
{
Base.Child()
}
public DeleteChild()
{
Base.Delete()
}
}
public abstract class Child
{
protected Child()
{
}
protected Delete()
{
}
public PublicPropertyToExpose()
{
}
}
Run Code Online (Sandbox Code Playgroud)
这里最好的设计是Bearing使用internal构造函数创建一个公共类,并在Wheel类中创建它的实例.
如果Bearing类需要访问类的私有成员,则Wheel可以创建公共Bearing类abstract,然后将具体实现作为private嵌套类Wheel.
通常,您不应该创建public嵌套类型.
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |