Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在静态类中实例化嵌套类_C#_Static_Nested - Fatal编程技术网

C# 在静态类中实例化嵌套类

C# 在静态类中实例化嵌套类,c#,static,nested,C#,Static,Nested,我目前正在尝试管理我在项目中使用的不同REST服务,我通过将一个静态类作为容器类,然后是几个嵌套类来实现,如下所示: public static class HostName { private const string HostAddress = "https://rest.connection.string/api" public class CourseQueryInformation{ public CourseQueryInformation(strin

我目前正在尝试管理我在项目中使用的不同REST服务,我通过将一个静态类作为容器类,然后是几个嵌套类来实现,如下所示:

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");
这感觉有点乱


所以,我的主要问题是,有没有更干净的方法?我真的很想在一个容器中对类进行排序,但我不确定这是否是最好的方法。

如果提供的方法是一个扩展,您可以始终使用扩展方法。这些在静态课堂上表现得很好。 只需在上面的using中添加名称空间,您就可以访问它们。就像林克一样

否则,可以在using命名空间中为类使用别名

using HNCourseQueryInformation = HostName.CourseQueryInformation;

我看你叫它的方式没有错。或者,您可以在主机名中使用工厂模式:

public static CourseQueryInformation CreateCourseQueryInformation(string par, string par2)
{
    return new CourseQueryInformation (par, par2);
}
把它叫做:

var typeofobj = HostName.GetCourseQueryInformation("par","parer");
或者将命名空间别名用作Samyne Suggests:

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

使用继承和命名空间应完成以下工作:

应该是这样的

 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范例的可维护的代码,使用继承和多态性

请发布一些实际的代码,你发布的东西看起来像没有返回类型的方法,但你称它们为类,你能添加缺少的部分吗?类没有参数。还有,为什么仅仅一个名称空间还不够呢?对不起,这个例子是错误的。编辑!为什么要滥用静态类作为“容器”,而名称空间正是用于此目的的?我确实需要学习示例制作技巧,但在本例中,父类有一个与基础类共享的常量私有属性。它包含REST服务的基本url,其中子类正在构建REST url的其余部分。现在编辑示例。没有恶意!