У меня есть класс примерно так:
public class User {
public User() {
// this constructor creates an object representing a brand new user
}
public static User Get(MyDbObject dbObject) {
// this factory method creates an object representing an existing user, from a database object
}
}
и унаследованный класс, например:
public class ExtendedUser : User {
public object ExtendedProperty { get; set; }
public static ExtendedUser Get(MyDbObject dbObj) {
User usr = User.Get(dbObj);
this = usr; // this does NOT work
this.ExtendedProperty = "just an example";
}
}
Первоначально все это работало с использованием перегруженных конструкторов, которые создавали объект из записи MyDbObject, поэтому у ExtendedUser был такой конструктор:
public ExtendedUser(MyDbObject dbObj) : base(dbObj) {
this.ExtendedProperty = "another example, this is how it WAS working";
}
Я хочу отказаться от использования конструкторов для создания этих объектов в пользу фабричных методов, но я не думаю о том, как назначить базовый экземпляр / объект без вызова конструктора. Это возможно?