我有几个从数据库自动生成的类,它们共享一些常见属性,其中包含属性 Name 。我需要一个变量 CurrentItem ,它可以保存这些类的任何实例,无论其类型如何,因此我可以访问它们的公共属性。
为了实现这一点,我创建了一个只实现公共属性的基类<header id="navigation__base">
<h1 id="navigation__title">
<a id="navigation__link" href="#">PLANS DU BAC</a>
</h1>
<label id="search__base">
<input id="search__input" type="search" />
<img id="search__icon" src="./ressources/media/search-icon.svg" alt="" />
</label>
</header>
,并且我使所有(部分)类继承它。
我收到消息DBItem
修复似乎很简单,除了我的类是自动生成的,因为它们是从我的数据库派生的。因此我无法应用推荐的解决方案。
这可能被视为一个简单的警告,并被忽略。不过我觉得它在我的程序中会引起一些问题。特别是,当创建DBItem时,它似乎有两个不同的 Name 属性。一个名为 Name 的名称正确填充,一个名为名称(Entity.DBItem),即'MyClass.Name hides inherited member DBItem.Name. Use the new keyword if hiding was intended.
。如果我尝试使用null
访问 Name 属性,则结果为null。
如何解决此问题,以便我可以从CurrentItem.Name
访问名称属性?
附加信息: 以下是自动生成的类的示例:
DBItem
这是基础非常简单的类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; }
}
}
我使用edmx和VisualStudio 2017。