Мы разрабатываем собственный модуль для ELMA и встал вопрос: Если мы хотим сделать общий интерфейс для классов, которые генерируются плагином, например ICustomDictionary с набором полей Code, Name, Value При создании нового класса мы указали реализацию этого интерфейса и генератор делает класс который реализует IEntity, ICustomDictionary. А как указать в дизайнере плагина (md файлов), что свойство нового класса (например Code) реализует интерфейс ICustomDictionary? Сейчас при компиляции появляются warinings из-за совпадения имен в реализуемом классе и интерфейсе
В дизайнере ELMA, реализуемые объектом интерфейсы настраиваются на вкладке "Дополнительные" в поле "Реализуемые интерфейсы". По идее аналогично должно быть и в Visual Studio (нет сейчас под рукой модуля с возможностью проверить). У самих свойств не указывается, что они реализуют свойство того или иного интерфейса, это должно происходить автоматически.
Если не указывать, что свойство реализует свойство интерфейса, то при компиляции идут warnings, которые сильно раздражают(((
Если при этом все работает корректно, и при обращении в коде проверка реализации интерфейса проходит утвердительно, то возможно, что так и должно быть, т.к. код класса генерируется автоматически, возможно без warnings нельзя было реализовать, ну или разработчики не стали на это заморачиваться Главное проверьте, реализует ли ваш объект указанный интерфейс непосредственно при работе с ним.
Честно не знаю, но с точки зрения синтаксиса самого C# и его механизма наследования и реализации интерфейсов, никакого атрибута для обозначения того, что данное свойство имплементирует такое-то свойство реализуемого интерфейса не требуется. Поэтому я не вижу необходимость в каком-либо атрибуте.
warning CS0108: "ITForces.ELMA.MobileTickets.Models.IMTBookingStatus.DateCreate" скрывает наследуемый член "ITForces.ELMA.MobileTickets.IMTDictionary.DateCreate". Если скрытие было намеренным, используйте новое ключевое слово. Use the new keyword if hiding was intended Наследуемый класс не использует new для сокрытия "член1" скрывает унаследованный член "член2" Если скрытие было выполнено намеренно, используйте ключевое слово new. Была объявлена переменная с тем же именем, что и переменная базового класса. Тем не менее ключевое слово new не использовалось.Это предупреждение свидетельствует о необходимости использовать ключевое слово new. Переменная объявлена так, как это делается при использовании ключевого слова new в объявлении.