Tag: inheritance

有没有办法强制派生类实现抽象类或嵌套在基类中的接口?

我有这个抽象类: public abstract class Task { public string ID {get; set;} public string Name {get; set;} public abstract class Options{}; public abstract void Execute(); } 我有其他类扩展这个类: public class Copy : Task { public override void Execute() { Console.Write (“running”); } } 我希望每个派生类都实现自己的Options类,以便它们可以拥有自己的参数。 因此, Search类必须使用它需要的属性来实现它自己的Options类,例如“ includesubfolders ”,“ casesensitive ”等。 同时Move任务可以实现它自己:“ 覆盖 ”等。 在抽象类中使属性和方法抽象强制派生类来实现它们自己但在同一个类中定义嵌套抽象类或接口不会强制它的派生类实现它们自己的类。 我可以在每个派生类中单独定义每个属性但由于我想在稍后的Execute方法中查询Task.Options中的属性而失败。 我也尝试过动态对象,但这带来了其他所有问题。

是否有inheritance密封类的替代方法?

我问这个的原因是因为我想创建一个具有FileInfo类的所有function的类(从FileInfo派生),并允许我添加自己的属性。 我认为一个例子会更多地合作。 我想要的是: BindingList files = new BindingList(); public void GatherFileInfo(string path) { files.Add(new FileInformation(path)); listboxFiles.DataContext = files; } class FileInformation : FileInfo { public bool selected = false; } 与我害怕我必须做的事情: BindingList files = new BindingList(); public void GatherFileInfo(string path) { files.Add(new FileInformation(path)); listboxFiles.DataContext = files; } class FileInformation : FileInfo { string path = […]

C#使用Form的控件在运行时添加选项卡

我已经想到了这个想法,你可以在表单上有一个选项卡控件,但不是在运行时之前定义每个选项卡控件,而是inheritance或使用另一个表单的控件。 基本上,在运行时之前没有选项卡的主窗体上有一个选项卡控件。 当运行时出现时,我想创建选项卡,但每个选项卡上的控件将来自单独的已创建表单。 每个表单都是在运行时之前创建的单独选项卡。 这可能吗? 是这样,怎么样? 提前致谢 编辑我正在使用3.5

避免“通过派生类型访问类型的静态成员”

我相信这纯粹是一个Resharper警告,但它背后的推理( 这里解释)很有道理。 Greg Beech所说的是你可以从兄弟类中调用基类静态方法……在他的例子中他使用: var request = (FtpWebRequest)HttpWebRequest.Create(…) ……这是误导性的。 那么有一种设计可以让我在以下课程中避免这种警告吗? public abstract class BaseLog { // I omitted several other properties for clarity protected static string category; protected static TraceEventType severity; static BaseLog() { category = “General”; severity = TraceEventType.Information; } public static void Write(string message) { Write(message, category, severity); } // Writes to a […]

c#中的抽象枚举

有没有办法在C#中制作( protected ) enum abstract ? 基类示例: protected abstract enum commands{}; //CS0106 protected abstract void useCommands(commands meh); 这不会编译,因为“ abstract对此项无效”。 是否有一种工作方式来实现所期望的行为?

WPF – 为基类实现System.ComponentModel.INotifyPropertyChanged

我想为基类上的属性实现System.ComponentModel.INotifyPropertyChanged接口,但我不太清楚如何连接它。 这是我想收到通知的属性的签名: public abstract bool HasChanged(); 我的基类中的代码用于处理更改: public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(String info) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(info)); } } 如何在基类中处理事件的连接而不必在每个子类中调用OnPropertyChanged()? 谢谢, 桑尼 编辑:好的…所以我认为当HasChanged()的值发生变化时,我应该调用OnPropertyChanged(“HasChanged”) ,但我不确定如何将它导入基类。 有任何想法吗?

c#:Inherited / interface静态成员?

有没有办法要求一个类有一个特定的抽象成员? 像这样的东西: public interface IMaxLength { public static uint MaxLength { get; } } 或许这个: public abstract class ComplexString { public abstract static uint MaxLength { get; } } 我想强制一种类型(通过inheritance或接口?)具有静态成员的方式。 可以这样做吗?

从具有共同成员的多个类创建超类

我现在已经好几次了。 在较长时间运行的软件项目中,两个或三个类在一开始就完全不同。 然而,随着时间的推移需求变化,用户会变得更聪明,在极少数情况下我甚至会变得更聪明,两个看似不同的流程变得非常相似。 因此,需要修改代码,这两个或三个类最终看起来太相似而不舒适。 他们只是尖叫着从一个共同的超类inheritance。 现在我是一个与生俱来的懒人(我之所以在一开始就制作软件),我很想拥有一个可以合并为超级类的工具。 使用Resharper,我可以从一种类型创建一个超类。 有没有人知道一个工具可以用多个类来做这个技巧,或者某种比较工具在一些类之间存在共性?

Automapper:如何不重复从复杂类型到基类的映射配置

我有一堆inheritance自这个CardBase的DTO类: // base class public class CardBase { public int TransId {get; set; } public string UserId { get; set; } public int Shift { get; set; } } // one of the concrete classes public class SetNewCardSettings : CardBase { // specific properties … } 在我的MVC项目中,我有一堆具有AuditVm复杂类型的视图模型,它具有与CardBase相同的属性: public class AuditVm { public int TransId {get; […]

entity framework/代码优先/ table-per-typeinheritance – 实现派生类和具体类之间的一对多关联

我在VS2012中使用MVC4,我遵循每个类型的表inheritance方法。 我正在尝试使用Seed()方法将数据添加到我的数据库。 我有以下课程: 房东 [Table(“Landlord”)] public class Landlord : UserProfile { // A Landlord can have many ResidentialProperties [ForeignKey(“ResidentialPropertyId”)] public virtual ICollection ResidentialProperties { get; set; } } ResidentialProperty [Table(“ResidentialProperty”)] public class ResidentialProperty { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int ResidentialPropertyId { get; set; } // A ResidentialProperty has 1 Landlord public virtual int UserId { get; […]