Запретить скрытое свойство сгенерированного класса - PullRequest
0 голосов
/ 31 мая 2018

Ситуация

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

Для этого я создал базовый класс DBItem, который реализует только общие свойства, и сделал все мои (частичные) классы наследуемыми от него.

Задача

Я получаю сообщение 'MyClass.Name hides inherited member DBItem.Name. Use the new keyword if hiding was intended. Исправление кажется легким, за исключением того, что мои классы генерируются автоматически, поскольку они получены из моей базы данных.Поэтому я не могу применить рекомендованное решение.

Это можно рассматривать как простое предупреждение, и его следует игнорировать.Я думаю, однако, что это вызывает некоторые проблемы позже в моей программе.В частности, когда создается объект DBItem, он, кажется, имеет два разных свойства Name .Один называется Имя , которое заполнено правильно, а другой называется Имя (Entity.DBItem) , что null.И если я попытаюсь получить доступ к свойству Name с помощью CurrentItem.Name, результат будет нулевым.

Как решить эту проблему, чтобы получить доступ к Name свойство из DBItem?

Редактировать

Дополнительная информация: Вот пример автоматически сгенерированного класса:

namespace LTG_Entity
{
    using System;
    using System.Collections.Generic;

    public partial class Environment
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Environment()
        {
            this.TemplateEnvironments = new HashSet<TemplateEnvironment>();
            this.Packages = new HashSet<Package>();
            this.Metas = new HashSet<Meta>();
        }

        public int Id { get; set; }
        public string Nom { get; set; }
        public string Desc { get; set; }
        public string Code { get; set; }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<TemplateEnvironment> TemplateEnvironments { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Package> Packages { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Meta> Metas { get; set; }
    }
}

Вот базовый очень простой классDBItem:

namespace LTG_Entity
{
    public class DBItem
    {
        public string Nom { get; set; }
        public string Description { get; set; }
    }
}

Я использую edmx и VisualStudio 2017.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...