在静态 class 中实例化嵌套 class

Instantiating nested class within static class

我目前正在尝试管理我在我的项目中使用的不同 REST 服务,我通过将一个静态 class 作为容器 class 来做到这一点,然后是几个嵌套的 classes,像这样:

public static class HostName {
    private const string HostAddress = "https://rest.connection.string/api"
    public class CourseQueryInformation{
        public CourseQueryInformation(string par, string par2)
        {
            ...
        }
    }

    public class PersonQueryInformation{
        public CourseQueryInformation(string par, string par2)
        {
            ...
        }
    }
}

现在我的主要问题是,为了实例化一个新对象,我必须执行以下操作:

var typeofobj = new HostName.CourseQueryInformation("par","parer");

感觉有点乱

所以,我的主要问题是,有没有什么方法可以更简洁地执行此操作?我真的很想将 classes 在一个容器中排序,但我不确定这是否是最好的方法。

如果提供的方法是扩展,您始终可以使用扩展方法。这些在静态 class 中完美运行。 只需在上面的 using 中添加命名空间,您就可以访问它们。就像 linq 一样。

否则,您可以在 using 命名空间

中为 class 使用别名
using HNCourseQueryInformation = HostName.CourseQueryInformation;

我看不出你的称呼方式有什么问题。作为替代方案,您可以在 HostName:

中使用工厂模式
public static CourseQueryInformation CreateCourseQueryInformation(string par, string par2)
{
    return new CourseQueryInformation (par, par2);
}

并这样称呼它:

var typeofobj = HostName.GetCourseQueryInformation("par","parer");

或按照 Samyne 的建议使用命名空间别名:

using CourseQueryInformation = HostName.CourseQueryInformation;
var typeofobj = new CourseQueryInformation("par","parer");

使用继承和命名空间应该按照此处的说明完成工作:inheritance and nameSpaces

应该是这样的

 namespace Hosting
{
    class Host //could be abstract also
    {   
        private string _hostAddress = "foo";
        get { return _hostAddress; }


    }

    public class CourseQueryInformation : Host
    {
        public CourseQueryInformation(string par, string par2)
            {
                ...
            }
    }


    public class PersonQueryInformation : Host
    {
        public PersonQueryInformation(string par, string par2)
        {
            ...
        }
    }

}

如果你使用继承,你也可以添加所有与你的子类共同的东西,然后得到一个尊重 OO 范式的可维护代码,玩弄继承和多态性