Дженерики - Открытые и закрытые созданные Типы

Изолированное устройство хранения данных, прежде всего, используется для приложений, распределенных с помощью ClickOnce, и выполняется в безопасной песочнице. Основной путь решен для Вас, и Вы не будете в состоянии, выводят его в Вашем коде. Путь будет чем-то как "\LocalSettings\ApplicationData\IsolatedStorage\ejwnwe.302\kfiwemqi.owx\url.asdaiojwejoieajae....", не весь настолько дружественный. Ваше пространство памяти также ограничено.

у Ryan Farley есть он правильный .

50
задан Sandra Walters 13 October 2017 в 04:33
поделиться

3 ответа

На практике терминология не имеет большого значения - я не могу помните, когда в последний раз мне приходилось беспокоиться об этом кроме , когда я пытался об этом написать. IsGenericType имеет довольно полезную небольшую таблицу.

Повторюсь, это почти не имеет значения при повседневном использовании.

Я вообще за знание правильной терминологии - особенно для таких вещей, как «пройти по ссылке "и т. д. - но в данном случае это действительно, действительно не очень часто. Я бы хотел убедить вас не беспокоиться об этом :)

70
ответ дан 7 November 2019 в 10:59
поделиться

Из MSDN :

Универсальный тип или метод закрывается, если создаваемые типы были заменены на все его параметры типа, включая все параметры типа всех включающих типов . Вы можете создать экземпляр универсального типа, только если он закрыт.

Таким образом, это работает как List is closed :

var list = Activator.CreateInstance(typeof(List<int>));

Но это вызывает исключение при время выполнения, потому что List <> открыт :

var list = Activator.CreateInstance(typeof(List<>));
                                               ↑
7
ответ дан 7 November 2019 в 10:59
поделиться

Я в основном использовал открытые дженерики (в основном неустановленные дженерики) в сопоставлениях внедрения зависимостей. Например, что-то вроде

Bind<IRepository<>>()
   .To<BasicRepository<>>()

Затем, когда мой конструктор объекта содержит:

public SomethingController(IRepository<Something>) { ... }

Мой механизм внедрения зависимостей автоматически создаст экземпляр BasicRepository . (Это работает с Ninject и StructureMap и, возможно, с библиотекой Castle Windsor; я не уверен в других фреймворках).

3
ответ дан 7 November 2019 в 10:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: