В этом случае, возможно, стоит добавить интерфейс, содержащий все ваши неуниверсальные элементы:
public IHasMyProperty
{
bool MyProperty { get; }
}
затем заставьте коллекцию реализовать это:
public class MyGenericCollection<T>: ReadOnlyObservableCollection<T>,
IHasMyProperty
затем возьмите IHasMyProperty
в вашем методе:
public bool ProblematicMethod(IHasMyProperty argument)
{
return argument.MyProperty;
}
или продолжайте принимать object
, но приведите к интерфейсу:
public bool ProblematicMethod(object argument)
{
return ((IHasMyProperty)argument).MyProperty;
}
В других случаях вы можете иметь неуниверсальный абстрактный базовый класс, который расширяет ваш универсальный класс, но в этом случае вы уже наследуете универсальный класс (ReadOnlyObservableCollection<T>
), который удаляет эту опцию.