Хорошо ... в Objective C вы можете создать новый подкласс из статического метода в базовом классе с помощью 'new this ()', потому что в статическом методе this указывает на класс, а не на экземпляр. Это была чертовски крутая находка, когда я впервые нашел ее и часто использовал.
Однако в C # это не работает. Черт!
Итак ... кто-нибудь знает, как я могу "создать" новый подкласс из статического метода базового класса?
Как то так ...
public class MyBaseClass{
string name;
public static Object GimmeOne(string name){
// What would I replace 'this' with in C#?
return new this(name);
}
public MyBaseClass(string name){
this.name = name;
}
}
// No need to write redundant constructors
public class SubClass1 : MyBaseClass{ }
public class SubClass2 : MyBaseClass{ }
public class SubClass3 : MyBaseClass{ }
SubClass1 foo = SubClass1.GimmeOne("I am Foo");
И да, я знаю, что могу (и обычно мог бы) просто использовать конструкторы напрямую, но у нас есть особая необходимость вызывать общего члена в базовом классе, поэтому я и спрашиваю. Опять же, цель C позволяет мне сделать это. Надеюсь, C # тоже.
Так ... кто-нибудь хочет?