Tag: oop

C#Custom Observable Collection – 我应该使用Composition还是inheritance?

我想创建一个自定义的可观察集合(可以绑定到XAML中),但我想跟踪需要覆盖可观察集合方法的其他信息。 ObservableCollection方法不是虚拟的 ,这意味着“覆盖”它们的唯一方法实际上就是使用’new’关键字隐藏它们。 这是我的意思的一个简单例子: //Tracks how many objects of each type are in this collection class CustomCollectionInherited:ObservableCollection { private Dictionary _count = new Dictionary(); public UInt32 getTypeCount(Type T) { return _count[T]; } #region Base Method ‘Overrides’ new public void Add(Object item) { base.Add(item); if (!_count.ContainsKey(item.GetType())) { _count[item.GetType()] = 1; } else { _count[item.GetType()] += 1; […]

在两种forms上使用和实例化一个类

我正在努力解决以下问题。 我目前有三种forms,我的主要和一个主要类。 public partial class frmMain : Form { public frmMain() { InitializeComponent(); } } public partial class frmSuppliers : Form { public frmSuppliers() { InitializeComponent(); } } public partial class frmCustomers : Form { public frmCustomers() { InitializeComponent(); } } 在我的主程序中,我有: public class Program { public StockControl StockSystem = new StockControl(“The Book Shop”, 20); […]

通过reflection区分类属性类型

我有一个Rectangle类 public class Rectangle : Base, IRectangle { public IDimension dimension { get; set; } public Position position { get; set; } public String color { get; set; } public int ID { get; set; } public override String ToString() { return base.ToString(this); } } 有没有办法区分Rectangle类中定义的reflection类型的属性? 我怎样才能理解ID是结构还是维度是接口? String和Position都是类,但String是在类中构建的,Position是Custom类。

将对象从派生类转换为对象

我有一个工作正常的类Record : public class Record { protected string table; protected string idcolumn; public Record(string _table, string _idcol, int _id) { table = _table; idcolumn = _idcol; Id = _id; } } 我还有一个派生自Order的类,它实现了额外的方法,仅适用于某种类型的记录: class Order : Record { public void Start() { } } 在我的应用程序中,我有一个对象类型Record ,我想要转换为Order ,以便我可以在其上调用Start方法。 我试图施展它: Order r = (Order)theRecord; 但是会抛出InvalidCastException 。 我想我可以为Order创建一个新的构造函数,它接受一个Record ,但我已经有了这个对象(它是通过从数据库中获取一个记录来构建的)。 […]

面向对象设计:何时制作抽象类

现在,我正在学习OOP,主要是在c#中。 我感兴趣的是创建一个无法实例化的类的主要原因是什么。 什么时候制作抽象类的正确例子是什么? 我发现自己在inheritance方式中使用抽象类太热情了。 当类在系统中是抽象的并且类不应该是抽象的时候是否有一些规则? 例如,我以某种方式制作了相似的医生和患者类,所以我从抽象类Person中派生出它们(因为它们都有名字和姓氏)。 那是错的吗? 对不起,如果问题很愚蠢,我对此非常陌生。

new()约束对类定义有什么作用?

我看到了这个代码示例,并想知道new()约束的目的是什么: public class Client : IClient where T : IClientFactory, new() { public Client(int UserID){ } }

数据隐藏的含义是什么?

OOP最重要的一个方面是数据隐藏。 有人可以使用一段简单的代码解释数据隐藏的确切原因以及我们需要它的原因吗?

为什么我的私人可以访问?

我有以下代码: public class PersonInitializer { private Person _person; public static Person LoadFromFile(string path) { PersonInitializer x = new PersonInitializer(); Person p = x._person; //Why am I accessible? return x.LoadFromFile(); //Sure. } public Person LoadFromFile(string path) { } } 为什么_ person可以从x访问,即使它是private ? 我该怎样做才能“保护”_person?

如何从通用方法访问类的属性 – C#

我有一个三级,具有以下属性 Class A { public int CustID { get; set; } public string Name{ get; set; } } Class B { public int CustID { get; set; } public string Age { get; set; } } 我创建了一个接受所有这些类的generics方法。 public void ProceesData(IList param1, string date1) { Parallel.ForEach(T, (currentItem) => { // I want to aceess CustID property […]

方法调用公共/私有成员或方法最佳实践 – C#.NET

从私有方法和公共方法调用成员/字段的最佳做法是什么? 私有方法是应该总是调用私有字段还是应该调用公共成员? private string _name; public string Name { get {return _name; } set { _name = value; } } public void DoSomething() { _doSomething(); } private void _doSomething() { _name.ToLower(); }