C#:让一个类方法返回自己

时间:2017-06-15 04:04:36

标签: c# class methods

我正在编辑一段代码,其中有两个单独的类Application和LogIn。

public class Application: WebEntity
{
    public void logInMethod()
    {
        LogIn logInObject = new LogIn();
        this = logInObject.logUserIn("user", "password");
    }
}

由于登录是Application的一项功能,我想创建一个使用LogIn的方法。 logIn.logUserIn(“user”,“password”)当前返回Application的对象。我希望能够做一些像第6步(上面)所做的事情。这可能吗?

2 个答案:

答案 0 :(得分:0)

简答:不,你不能。

方法无法设置正在执行的实例。很难理解你想做什么,但你可能想要做的是创建一个返回Application实例的方法:

public class Application : WebEntity
{
    public static Application CreateLogedInApplication()
    {
        LogIn logInObject = new LogIn();
        Application newApplication = logInObject.logUserIn("user", "password");

        return newApplication;
    }
}

答案 1 :(得分:0)

听起来你需要这样的东西:

public class Application
{
    private Token _token = null;

    public void logInMethod()
    {
        LogIn logInObject = new LogIn();
        _token = logInObject.logUserIn("user", "password");
    }
}

public abstract class Token
{
    public abstract string UserName { get; }
    public abstract bool Validated { get; }
}

public class LogIn
{
    private class TokenImpl : Token
    {
        public TokenImpl(string userName, bool validated)
        {
            _userName = userName;
            _validated = validated;
        }
        private string _userName;
        private bool _validated;
        public override string UserName { get { return _userName; } }
        public override bool Validated { get { return _validated; } }
    }

    public Token logUserIn(string userName, string password)
    {
        return new TokenImpl(userName, password == "pAssw0rd");
    }
}

基本上,LogIn类会创建Token类可以使用的Application