Я пытаюсь создать интерфейс, который возвращает измененную копию экземпляра, который ее реализует, и не изменяет исходный экземпляр.
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)?