我有一个名为User的类,可以像这样初始化它:
User user = new User();
这很好用,但在某些情况下我想在User类中调用一个静态方法,所以代码现在看起来像这样:
User user = User.SomeMethod();
我确信这并不是非常困难,因为我在System.Diagnostics.Process
看到过它:
Process p = Process.Start("filename");
我如何让我的班级做同样的事情?
编辑:
这就是我班上的样子:
public class User
{
public User()
{
// this runs when User u = new User() is called
}
public static void SomeMethod()
{
// I want this to run when "User u = User.SomeMethod() is called
}
}
我错过了方法构造函数吗?
你在谈论这样的事吗?没有方法构造函数,但您可以从方法内部调用构造函数。您还可以拥有从该方法调用的私有构造函数。
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...");
}
}
您要实现的目标称为工厂模式。大多数情况下,您创建一个单独的类,将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
};
}
}