草庐IT

inheritance

全部标签

c# - 我如何声明派生的 "shell"类,它们除了重命名外什么都不做?

我在代码中传递和使用了两种不同类型的字符串,这两种字符串密切相关,但不应相互混淆。我想我可以通过拥有两个只是字符串但具有不同名称的类来帮助自己避免错误,这样方法签名(以及一般的类型不兼容)将强制执行两种不同类型字符串的语义。同时,我不想从something="foo";重构。至something.Value="foo";在一百个地方。第一个想法:privateclassFirstKind:string{}privateclassSecondKind:string{}想法是如果我有voidMyMethod(FirstKindvarOne,SecondKindvarTwo){...},然后

c# - 重写继承方法时避免显式类型转换

我有一个基础抽象类,它也实现了一个特定的接口(interface)。publicinterfaceIMovablewhereTEntity:classwhereT:struct{TEntityMove(IMovermoverProvider);}publicabstractclassAnimal:IMovable{...publicvirtualAnimalMove(IMovermoverProvider){//performsmovementusingprovidedmover}}然后我继承了一些类,其中一些类必须重写基类的接口(interface)实现方法。publicclassS

C# : Transitive Inheritance

继承是C#中的传递关系吗?我问是因为我不明白为什么IList工具ICollection和IEnumerable作为ICollection已经实现IEnumerable感谢您为我澄清这一点。 最佳答案 它在所有方面都是可传递的。可能您用来查看继承层次结构的工具具有特定的显示方式。无法取消实现接口(interface),尽管您可以显式实现它,从而对智能感知隐藏它。作为IList的作者,您可以自由选择仅派生自ICollection还是派生自ICollection和IEnumerable。在这种情况下,IEnumerable将是多余的并由r

c# - 如何为其派生类型的每种可能组合实现基类的方法

我有以下由多个其他类实现的Shape接口(interface),例如Rectangle、Circle、Triangle...interfaceIShape{boolIsColliding(IShapeother);}IsColliding方法应该检查一个Shape是否与另一个Shape发生碰撞,而不管它们的具体类型。然而,每一对形状(矩形/矩形、矩形/圆形、圆形/三角形等)都有自己的碰撞检查实现。我正在努力为这个问题找到一个好的设计解决方案。天真的方法是切换“其他”形状的类型以调用正确的实现:classRectangle:IShape{boolIsColliding(IShapeoth

c# - 在抽象父类(super class)的子类中强制使用属性

如何强制子类实现其父类(superclass)的某些属性?原因是我想使用属性来获取有关该类的一般信息,例如“显示名称”、“说明”或“功能”。所以我想我可以在父类(superclass)中实现它们并强制子类实现这些属性。是否有类似于方法的抽象属性?[abstractDeclareMe]publicabstractclassInheritMe{publicabstractvoidDeclareMe();} 最佳答案 由于你的类迟早要运行,你可以在你的基类中添加检查机制来验证你的子类中某些属性的存在。这里有一些示例代码。classProg

c# - 继承一个接口(interface),实现部分方法,让派生类实现其余部分

定义以下C#接口(interface):publicinterfaceIShape{intNumberOfLineSegments{get;}intArea{get;}}接下来,我要定义几个矩形类:梯形、正方形等。所有这些类的Area()属性都不同,但NumberOfLineSegments()总是返回4。因此,我想要一个名为Rectangle(或IRectangle)的“临时”类或接口(interface),它看起来像:publicRectangle:IShape{publicintNumberOfLineSegments{get{return4;}}}我希望Rectangle仅实现

c# - Entity Framework 4.1 RC : Code First EntityTypeConfiguration inheritance issue

我正在尝试使用一个通用的EntityTypeConfiguration类来为我的所有实体配置主键,以便每个派生配置类不会重复自身。我的所有实体都实现了一个通用接口(interface)IEntity(表示每个实体都必须有一个int类型的Id属性)。我的配置基类如下所示:publicclassEntityConfiguration:EntityTypeConfigurationwhereTEntity:class,IEntity{publicEntityConfiguration(){HasKey(e=>e.Id);Property(e=>e.Id).HasDatabaseGenerat

c# - 确定一个类是否实现了一个非常具体的接口(interface)

关于这个主题有很多问题,但我有一个稍微修改过的版本。我们有以下代码:interfaceIFoo{}interfaceIBar:IFoo{}classFoo:IFoo{}classBar:IBar{}boolImplements_IFoo(Typetype){/*???*/}现在,故事的转折点是:Implements_IFoo方法应该只在Type仅实现IFoo而不是从IFoo派生的任何接口(interface)时返回true。为了说明这里是这种方法的一些例子:Implements_IFoo(typeof(Foo));//ShouldreturntrueImplements_IFoo(ty

c# - 如何获取基类的所有继承类?

这个问题在这里已经有了答案:HowtofindallthetypesinanAssemblythatInheritfromaSpecificTypeC#(4个答案)Getallderivedtypesofatype(8个答案)关闭9年前。classFoo{}classFoo1:Foo{}classFoo2:Foo{}我怎样才能获得所有使用Foo作为基类的类?继承的类在同一个程序集中不是必需的。

c# - .NET XML 序列化和继承

我有这样的结构:publicinterfaceA{publicvoidmethod();}publicclassB:A{}publicclassC:A{}Listlist;List包含类型B和C的对象,它们也有一些我想保留的字段,我现在可以序列化它,反序列化回来并获得正确的对象实例吗?最好是XML编辑:有什么简单的方法可以序列化这个包含接口(interface)的列表,然后反序列化回B和C实例吗? 最佳答案 假设您正在使用内置的.netXML序列化,您应该查看以下属性:System.Xml.Serialization.XmlIncl