我目前正在尝试管理我在项目中使用的不同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");
这感觉有点乱。
所以,我的主要问题是,有没有办法以更清洁的方式做到这一点?我真的希望将类保存在容器中,但我不确定这是否是最好的方法。
答案 0 :(得分:2)
使用继承,命名空间应该按照此处的说明完成工作: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范例,播放继承和多态
答案 1 :(得分:1)
我认为你打电话的方式没有错。作为替代方案,您可以在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");
答案 2 :(得分:0)
如果提供的方法是扩展,则可以始终使用扩展方法。那些在静态类中完美地工作。 只在上面的使用中添加命名空间,您才能访问它们。就像linq一样。
否则,您可以在using namespace
中为该类使用别名using HNCourseQueryInformation = HostName.CourseQueryInformation;