В последнее время я занимался программированием и столкнулся с проблемой, которая показалась мне странной в c #. (по крайней мере для меня)
public class Foo
{
//whatever
public class FooSpecificCollection : IList<Bar>
{
//implementation details
}
public FooSpecificCollection GetFoosStuff()
{
//return the collection
}
}
Я хочу, чтобы потребитель Foo мог получить ссылку на FooSpecificCollection и даже выполнить некоторые операции с ней. Может быть, даже установить какое-либо другое свойство Foo или что-то в этом роде, но не для того, чтобы СОЗДАТЬ экземпляр этого класса. (единственный класс, который должен иметь возможность создавать эту коллекцию, должен быть Foo.
Является ли моя просьба надуманной? Я знаю, что люди намного умнее определяют c #, но разве не должно быть такой опции, чтобы родительский класс мог создать экземпляр вложенного класса, но никто другой не может.
До сих пор я создал решение, позволяющее сделать абстрактный класс или интерфейс доступным через свойство, и реализовать конкретный закрытый класс, который больше нигде не доступен.
Это правильный способ справиться с такой ситуацией .?