我有一个名为User的类,可以在其中进行如下初始化:
SELECT x.well_id,
x.reservoir
FROM (SELECT b.well_id,
b.reservoir,
row_number() OVER (PARTITION BY b.well_id
ORDER BY b.qualifier ASC,
b.createddate DESC) r#
FROM b
INNER JOIN a
ON a.well_id = b.well_id) x
WHERE x.r# = 1;
这很好用,但是在某些情况下,我想在User类内调用静态方法 ,这样代码现在看起来像这样:
User user = new User();
我确信这并不是特别困难,因为我已经在User user = User.SomeMethod();
中看到了它:
System.Diagnostics.Process
如何让我的班级做同样的事情?
编辑:
这是我班级的样子:
Process p = Process.Start("filename");
我是否缺少方法构造函数?
答案 0 :(得分:2)
您是否在谈论这样的事情? 没有方法构造函数,但是您可以从方法内部调用构造函数。您还可以有一个从该方法调用的私有构造函数。
class User {
...
public User() {}
private User(string s) {
// Can only be called inside User class
Console.WriteLine(s);
}
public static User Create() {
return new User("Creating user from method...");
}
}
答案 1 :(得分:0)
您要实现的目标称为工厂模式。在大多数情况下,您将创建一个单独的类,在其中添加Factory名称,它将为您创建User类。如果要控制如何创建User类,请使用工厂模式:
public class UserFactory
{
public static User CreateUser()
{
return new User();
}
}
注意:上面的代码只是简单的解释,关于工厂模式还有很多事情,并且比几行代码更复杂。如果您需要了解更多信息,可以查看下一个link ,它将为您提供详细的说明。
如果您希望User类负责通过静态方法创建自身,请查看以下示例:
public class User
{
public string Name { get; set; }
public string LastName { get; set; }
public User()
{
}
public static User CreateUser()
{
return new User();
}
public static User CreateUser(string name, string lastName)
{
return new User
{
Name = name,
LastName = lastName
};
}
}