public interface IReadOnlyCollection { bool TryGetValue(TKey key, out TValue value); } public class MyCollection : Dictionary, IReadOnlyCollection { } public class MyClass { private MyCollection _myCollection; public IReadOnlyCollection MyCollection { get { return _myCollection; } } private void PrivateMethod() { _myCollection.Add(1, "test"); } } public class SomeClass { private void SomeMethod() { MyClass myClass = new MyClass(); string s; myClass.MyCollection.TryGetValue(1, out s); } }