Я хочу создать набор классов, которые очень похожи и могут быть отброшены друг к другу. Моя идея состояла в том, что я бы создал объект интерфейса и реализовал его через базовый класс. Затем создайте дополнительные классы, которые наследуются от моей базы. Затем я мог бы использовать интерфейс для работы с общими (базовыми) методами и отбрасывать объект из объекта BASE в пользовательский.C# Типы литья из интерфейсов
interface ImyInterface {
}
public class MyBase : ImyInterface {
}
public class MyCustom1 : MyBase {
}
public class MyCustom2 : MyBase {
}
// in helper class
public static MyBase GetGeneralOjbect() {
// get a generic base object
return new MyBase();
}
// How I'm trying to use this
MyCustom1 obj = GetGeneralOjbect() as MyCustom1;
Это, похоже, работает, за исключением кастомизации оператора объекта. MyCustom1 всегда имеет значение null, хотя статический помощник GetGeneralOjbect возвращает хороший объект MyBase. Возможно, этого не может быть сделано, или я не делаю это правильно. Любой вход был бы оценен.
Я подозревал, что это так. Думал, что я попытаюсь выполнить эту конкретную ситуацию, когда я делал, но не был уверен, что это было правильно. Спасибо за ваш вклад. –
Ну ... вы * можете * сделать это ... он просто сработает и сгорит во время работы. 'MyCustom1 c = new MyCustom2();' даже не будет компилироваться даже при явном нажатии. – Servy
Да, вы * можете * сделать это, но, как заметил OP, результат второго приведения будет «null». –