Идемпотентный метод интерфейса в c # - PullRequest
5 голосов
/ 30 апреля 2019

Я пытаюсь создать интерфейс, который возвращает измененную копию экземпляра, который ее реализует, и не изменяет исходный экземпляр.

public interface ICensoreable<T> {
    T GetCensored();
}

И объект, который реализует

public class User:ICensoreable<User> {
    public User(User copyFrom) {
        this.name = copyFrom.name;
        this.password = copyFrom.password;
    }

    public string name;
    public string password;

    public User GetCensored() {
        User result = new User(this);
        result.password = null;

        return result;
    }
}

Есть ли способ принудительно установить на интерфейсе , чтобы GetCensored не изменял экземпляр пользователя (или T)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...