Tag: oop

访问重写方法

有一个练习“OverloadResolutionOverride” 以下代码的输出结果如何: class Foo { public virtual void Quux(int a) { Console.WriteLine(“Foo.Quux(int)”); } } class Bar : Foo { public override void Quux(int a) { Console.WriteLine(“Bar.Quux(int)”); } public void Quux(object a) { Console.WriteLine(“Bar.Quux(object)”); } } class Baz : Bar { public override void Quux(int a) { Console.WriteLine(“Baz.Quux(int)”); } public void Quux(params T[] a) { Console.WriteLine(“Baz.Quux(params […]

动态可交换数据访问层

我正在编写一个数据驱动的WPF客户端。 客户端通常从WCF服务中提取数据,该服务查询SQL数据库,但我希望选择直接从SQL或其他任意数据源提取数据。 我想出了这个设计,并希望听听你对它是否是最好的设计的看法。 首先,我们要从SQL中提取一些数据对象。 // The Data Object with a single property public class Customer { private string m_Name = string.Empty; public string Name { get { return m_Name; } set { m_Name = value;} } } 然后我计划使用所有数据访问层应该实现的接口。 假设一个人也可以使用抽象类。 思考? // The interface with a single method interface ICustomerFacade { List GetAll(); } 可以创建SQL实现。 // […]

如何为Linq表达式添加排序规则?

如何实现IQuariable的方法如下: var trash = (from a in ContextBase.db.Users orderby a.FirstName select a).ToCollatedList(); 结果我想看到 SELECT * from [User] ORDER BY FirstName COLLATE SQL_SwedishStd_Pref_Cp1_CI_AS ASC 谢谢。

C#:将派生类作为一个通用参数传递

我最近开始学习更多关于事件/代理以及类扩展的知识。 我想通过向Windows Form控件添加一个名为SetDraggable()的扩展方法,将我学到的东西付诸实践,然后使用MouseDown和MouseMove事件来移动控件。 一切正常,除了它只适用于特定控件的想法 – 在我的例子中,一个Button 。 namespace Form_Extensions { public static class Extensions { private static System.Windows.Forms.Button StubButton; private static Point MouseDownLocation; public static void SetDraggable(this System.Windows.Forms.Button b) { b.MouseDown += b_MouseDown; b.MouseMove += b_MouseMove; StubButton = b; } private static void b_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Left) { MouseDownLocation = […]

强制执行必须在*不同*字段中的每个子类实现的属性的最佳方法是什么?

我试图提出实现SQL数据服务灵活实体模型的“最佳”方法,其中每个类都可以存储为实体,甚至是实体类。 示例:每个子类都有不同 string Id string Kind Dictionary Properties 到目前为止,我正朝着同时拥有一个Entity类(上面的)和一个类似于某种集合的基类的方向前进 Dictionary data 并让每个子类添加到该字典,只需获取/设置属性 data[“EntityKind”].Properties[“PropertyName”] 但是,由于每个类只有一个实体,看起来我应该使用某种Stack(intead of Dictionary),其中层次结构的每个级别都知道它的确切位置。 然后我发现类inheritance就是堆栈,所以我想也许我只是错过了一些真正简化所有这一切的OO概念。 就像是 abstract eachsubclassmusthaveitsown Entity entity

使用绕组编号指向多边形

问题是:如何确定一个点是否在多边形内? 这个问题已被多次询问和回答。 有多种方法可用于确定点是否在多边形内。 我已经了解了绕组数算法,将另一个SO线程的可靠答案移植到C#中并在其周围编写了xUnit测试,以确保我能够无情地重构。 目标是得到一个答案,所有这些似乎都使用过程编程方法和变量名称,这些名称与您在数学公式中找到的类似,并将其重构为一组合理合理的OOP类和方法。 所以,要将这个问题专门改为我将继续提供的答案: 如何确定位置/点(纬度和经度)是否在OOP C#中的多边形内?

不是按名称指定接口成员,而是键入

我有一些来自某些外部WSDL文件的svcutil生成的类似类。 任何类都有一个Header属性和string属性,它名为class name + “1” 。 例如,我有类:具有Header属性和SimpleRequest1属性的SimpleRequest1 。 另一个是具有Header属性和ComplexRequest1属性的ComplexRequest1 。 所以,我想为这些类创建一个通用接口。 所以,基本上我可以定义类似的东西: interface ISomeRequestClass { string Header; // here is some definition for `class name + “1”` properties… } 是否可以在界面中定义这样的成员? 这是post编辑去… 以下是生成的类的示例: [System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute(“System.ServiceModel”, “3.0.0.0”)] [System.ServiceModel.MessageContractAttribute(IsWrapped=false)] public partial class SimpleRequest { public string Header; [System.ServiceModel.MessageBodyMemberAttribute(Name=”SimpleRequest”, Namespace=”data”, Order=0)] public SimpleRequestMsg SimpleRequest1; public SimpleRequest() { } public […]

类型约束

我有以下类层次结构。 class Header { IEnumerable Item { get; set; } …. } class HeaderA : Header { …. } // Item should have the type of IEnumerable class HeaderB : Header { …. } // Item should have the type of IEnumerable class Item { …. } class ItemA : Item { …. } class […]

C#在类构造函数中分配类属性有什么好处吗?

例如,如果我有这样的类: namespace Sample { public Class TestObject { private Object MyAwesomeObject = new MyAwesomeObject(); } } 设置它是否有任何好处,以便在这样的构造函数中设置属性? namespace Sample { public Class TestObject { private Object MyAwesomeObject; public TestObject() { MyAwesomeObject = new MyAwesomeObject() } } }

LINQ to SQL – 1对1关联的问题

在L2S设计器中,我删除了一个表和一个视图。 我尝试在主键上添加2之间的关联。 这应该是一对一的关系,所以我设置了关联的基数属性。 但是,编码时我无法访问子属性。 有什么建议? 编辑 我刚刚在sql server中创建了一个包含我想要的字段的视图,并将其放入L2S中。 更简单。