kouzdra (kouzdra) wrote,
kouzdra
kouzdra

Category:

Знатокам ООП:

Я с подсказкой таки нашел как сделать из BlockingCollection стек, а не очередь: передать "базовую" коллекцию извне. Но получился вот такой изврат:
	
        public class BlockingStack<T> : BlockingCollection<T>
	{
		private ConcurrentStack<T> stack;
		private BlockingStack (ConcurrentStack<T> stack) :
			base (stack)
		{ this.stack = stack; }

		public BlockingStack () : this (new ConcurrentStack<T> ()) { }
                ...
        }

Приватный конструктор нужен мне строго говоря ровно за одним: мне нужно иметь доступ к самому стеку. Достать его из самой BlockingCollection почему-то нельзя. А просто присвоить полю можно только после выполнения конструктора базового класса, которому стек уже надо передать - потому приходится таким вот странным образом протягивать через "вспомогательный конструктор с параметром".

Интересно - это черезжопие никак не лечится? Не то, чтобы мешало - но как-то неэстетично
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 28 comments