在静态 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 范式的可维护代码,玩弄继承和多态性
我目前正在尝试管理我在我的项目中使用的不同 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 范式的可维护代码,玩弄继承和多态性