Я использую EmacsW32, он работает отлично. РЕДАКТИРОВАНИЕ: Я теперь использую регулярный GNU Emacs 24, вижу ниже.
Посмотрите страница EmacsWiki для деталей.
мне, самое большое преимущество состоит в том что:
И относительно XEmacs, согласно это сообщение Steve Yegge:
подводя итоги, я утверждал, что XEmacs имеет намного более низкую долю рынка, более плохую производительность, больше ошибок, намного более низкой устойчивости, и в этой точке, вероятно, меньше функций, чем GNU Emacs. При складывании всего этого это - более слабый кандидат большим полем.
РЕДАКТИРОВАНИЕ: Я теперь использую регулярный GNU Emacs 24. Это также содержит Nxml, может быть установлено или создано из источников, и с эта обертка , сервер Emacs запускается, если никакой сервер не работает. За Ваше здоровье!
Я не уверен, что это работает, но пробовали ли вы зарегистрировать MyDataContext как компонент, а не отображение типов?
container.RegisterType<MyDataContext>();
вместо
container.RegisterType<MyDataContext, MyDataContext>();
EDIT на основе новой информации
По всей видимости, виноват в том, что MyDataContext имеет более одного конструктора. Это обычная проблема для большинства контейнеров DI, потому что им нужно выбрать и использовать только один. Если вы можете устранить двусмысленность, ограничив MyDataContext только одним конструктором, это, вероятно, будет самым простым решением.
В противном случае вы сможете использовать экземпляр InjectionConstructor для идентификации конструктора при регистрации репозитория. Предположим, вы хотите использовать конструктор, который принимает в качестве аргумента строку подключения:
string connectionString =
ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
var injectedConnectionString = new InjectionConstructor(connectionString);
container.RegisterType<MyDataContext>(injectedConnectionString);
При выборе нескольких конструкторов Unity не знает, какой из них использовать. Он выберет тот, у которого больше всего аргументов, которые могут быть удовлетворены, но в этом случае есть два конструктора с двумя разрешаемыми аргументами.
Если вы не хотите связывать свой класс MyDataContext
с Unity и используя атрибут InjectionConstructor
, как было предложено Скоттом (проголосовало за :)), вы можете указать конструктор, который должен использоваться во время регистрации, используя свободный интерфейс. Подробнее см. Настройка внедрения конструктора, свойства и метода .
Я не вижу ваших конструкторов MyDataContext; но попробуйте добавить атрибут [InjectionConstructor] к тому, который вы хотите использовать.