У меня есть интерфейс iClass
. Один из методов в интерфейсе принимает другой интерфейс, iObject
, в качестве аргумента.Вызов определенного потомка интерфейса в реализации другого интерфейса
В одной конкретной реализации iClass
, мне нужен способ, чтобы принять конкретную реализацию в iObject
, ObjectImplementation
- но C# говорит мне, что нужно реализовать метод, как есть.
Почему это? не является ObjectImplementation
экземпляром iObject
? Как мне обойти это? Вместо этого я попытался использовать абстрактный класс, и я попал в один и тот же беспорядок.
public interface iClass {
bool SomeMethod(iObject object);
}
public interface iObject {
... // some methods here
}
public ObjectImplementation : iObject {
... // some method implementations here
}
public ClassImplementation : iClass {
public bool SomeMethod(ObjectImplementation object) // <- C# compiler yells at me
{
}
}
Этот не будет работать, если для реализации «SomeMethod» в «ClassImplementation» действительно нужна «ObjectImplementation» и ничего больше. Например. потому что 'ObjectImplementation' имеет дополнительные члены. –