У меня есть (довольно простая) проблема, и кажется, я не могу понять, как это сделать.Я был бы признателен за помощь.
У меня есть два класса, которые похожи на это:
public class FileParameters { ... }
public abstract class File {
...
public abstract FileParameters Params { get; }
}
Из обоих классов у меня есть производная специальная версия:
public class SpecialFileParameters { ... }
public abstract class SpecialFile {
...
private SpecialFileParameters params;
public override FileParameters Params { get { return params; } }
}
Когда я хочу использовать SpecialFileParameters, я должен сначала привести их, например:
((SpecialFileParameters)SpecialFileObject.Parameters).DoSomething();
, что довольно неприятно.То, что я хотел бы иметь, это в основном тот же синтаксис, что и для интерфейсов
public abstract class SpecialFile {
...
private SpecialFileParameters params;
private override FileParameters File.Params { get { return params; } }
public new SpecialFileParameters Params { get { return params; } }
}
Но вот так я получаю ошибку компилятора: «Файл» в явном объявлении интерфейса не является интерфейсом.Есть ли другой способ сделать это?
Дополнительная информация:
- Я не могу изменить базовые классы, только мои специальные классы
- Мне действительно нужны 2 специальныхпроизводные классы, один написан на C #, другой на C ++ / CLI.Если "хитрость" в том, чтобы заставить его работать, отличается в C # и C ++ CLI, пожалуйста, дайте мне знать.
Спасибо за вашу помощь (и терпение, я думаю, ^^),