Есть ли способ указать ограничение where T:new(), но с помощью внутреннего конструктора?

Я создал универсальный класс, которому необходимо создать экземпляр своего типа реализации, поэтому тип реализации должен иметь доступный конструктор без параметров. Похоже, что ограничение new() может выполнить эту работу, но оно заставляет тип реализации иметь открытый конструктор, когда он у меня есть внутренний (но доступный, поскольку оба находятся в одной сборке).

  1. Есть ли причина сделать его общедоступным, а не «доступным»?
  2. Есть ли способ сделать то, что мне нужно?

Заранее спасибо.

РЕДАКТИРОВАТЬ: Причина этого в том, что у меня есть класс X, который должен использоваться через Singleton. Класс Singleton является универсальным классом, и я хочу сделать конструктор класса X внутренним, чтобы избежать неправильного доступа внешних пользователей к объекту (вызов конструктора).

6
задан Ignacio Soler Garcia 11 May 2012 в 12:53
поделиться