C# 虚拟馆藏界面
是否有可能创建一个接口,以便在我的类中需要一个虚拟集合类型 问候C# 虚拟馆藏界面,c#,interface,C#,Interface,是否有可能创建一个接口,以便在我的类中需要一个虚拟集合类型 问候 namespace Models.Entities { public partial class FileType : IMyInterface { public long CompanyId { get; set; } public long FileTypeId { get; set; } public string AcceptType { get; set;
namespace Models.Entities
{
public partial class FileType : IMyInterface
{
public long CompanyId { get; set; }
public long FileTypeId { get; set; }
public string AcceptType { get; set; }
//IMyInterface contract
public virtual ICollection<Translation> FileTypeTranslations { get; set; }
public FileType()
{
this.FileTypeTranslations = new HashSet<FileTypeTranslation>();
}
}
public class Translation : EntityTranslation<long, FileType>
{
[Required]
public string TypeName { get; set; }
}
}
名称空间模型.实体
{
公共部分类文件类型:IMyInterface
{
公共长公司ID{get;set;}
公共长文件类型ID{get;set;}
公共字符串接受类型{get;set;}
//界面合同
公共虚拟ICollection文件类型转换{get;set;}
公共文件类型()
{
this.FileTypeTranslations=新哈希集();
}
}
公共类翻译:实体翻译
{
[必需]
公共字符串类型名{get;set;}
}
}
否。是实施细节,不是合同细节
virtual关键字用于修改方法、属性、索引器或事件声明,并允许在派生类中重写它。 我用粗体标记了描述的关键部分。编号是实施细节,而不是合同细节
virtual关键字用于修改方法、属性、索引器或事件声明,并允许在派生类中重写它。
我用粗体标记了该描述的关键部分,您可以尝试使用
抽象类
而不是接口
。因此,在继承自文件类型
的类中,您可以再次重写
此属性,即虚拟
访问修饰符在文件类型
声明中的行为:
public abstract class MyInterface
{
public abstract ICollection<Translation> FileTypeTranslations { get; set; }
}
public class FileType : MyInterface
{
public override ICollection<Translation> FileTypeTranslations { get; set; }
}
public class FileTypeInherited : FileType
{
public override ICollection<Translation> FileTypeTranslations { get; set; }
}
公共抽象类MyInterface
{
公共抽象ICollection文件类型转换{get;set;}
}
公共类文件类型:MyInterface
{
公共重写ICollection文件类型转换{get;set;}
}
公共类FileTypeInherited:FileType
{
公共重写ICollection文件类型转换{get;set;}
}
您可以尝试使用抽象类
而不是接口
。因此,在继承自文件类型
的类中,您可以再次重写
此属性,即虚拟
访问修饰符在文件类型
声明中的行为:
public abstract class MyInterface
{
public abstract ICollection<Translation> FileTypeTranslations { get; set; }
}
public class FileType : MyInterface
{
public override ICollection<Translation> FileTypeTranslations { get; set; }
}
public class FileTypeInherited : FileType
{
public override ICollection<Translation> FileTypeTranslations { get; set; }
}
公共抽象类MyInterface
{
公共抽象ICollection文件类型转换{get;set;}
}
公共类文件类型:MyInterface
{
公共重写ICollection文件类型转换{get;set;}
}
公共类FileTypeInherited:FileType
{
公共重写ICollection文件类型转换{get;set;}
}
要覆盖方法、属性、事件、索引器,它们必须是虚拟的。但如果它们是虚拟的,则不强制覆盖它们,而是可选的。如果我们谈论抽象类,抽象类的成员隐式地是虚拟的。这就是为什么我们在某些子类中定义它们时需要使用override关键字。为了覆盖方法、属性、事件、索引器,它们必须是虚拟的。但如果它们是虚拟的,则不强制覆盖它们,而是可选的。如果我们谈论抽象类,抽象类的成员隐式地是虚拟的。这就是为什么在某些子类中定义它们时需要使用override关键字的原因