Я пытаюсь сделать что-то вроде ниже:
public class SomeWrapper : ISomeWrapper{
public static implicit operator ActualRec(ISomeWrapper someWrapper)
{
return ((SomeWrapper)someWrapper).SomeInfo;
}
}
Но этот код не работает, говоря:
«Либо параметр, либо возвращаемый тип должны иметь тип SomeWrapper».
Я понимаю проблему, которую ставит компиляция. Но мне нужно это преобразование типовb, потому что во всем приложении я использую ISomeWrapper в качестве переменной, хранящей экземпляр SomeWrapper. (Кроме того, SomeWrapper - единственный класс, реализующий ISomeWrapper).
Есть ли способ сделать неявное преобразование, если интерфейс ISomeWrapper соответствует типу, который я знаю в моем конкретном классе?
Edit:
Как предполагается всеми, неявное приведение из интерфейса невозможно в C #.
Почему мне нужно это сделать? Я хочу разрешить (неявно) пользователю ISomeWrapper вызывать методы, которые требуют ActualRec в качестве параметра БЕЗ предоставления доступа пользователям ISomeWrapper для вызова методов / свойств ActualRec.
Например,
Если я включу свойство ActualRec в ISomeWrapper, то пользователи ISomeWrapper смогут вызывать методы, доступные в ActualRec (скажем, someWrapper.ActualRec.Dispose ()), которые я НЕ хочу раскрывать.
Вот причина попытки найти неявное преобразование.
Кроме того, я не хочу использовать SomeWrapper в приложении.
Пожалуйста, предложите, если есть какая-то концепция / шаблон для этого.
Спасибо за проявленный интерес.