草庐IT

架构设计

全部标签

c# - 在方法名称末尾包含介词是否符合或有损于正常的 C# API 设计?

我知道这听起来像是一个主观的回答,但我会尽量使问题尽可能客观,因为对问题的客观回答将是最有帮助的。我最近有一位代码审查员指出我有在方法末尾添加介词的习惯。这是我最近编写的一个方法,作为Point类的扩展方法:varrectangle=newRectangle(0,0,2,2);varpoint=newPoint(3,1);varresult=point.DistanceTo(rectangle);我的代码审阅者提到方法应该是point.Distance(rectangle)。我一直认为这是主观的和风格问题。但是,我注意到更多.NETAPI设计朝着这个方向发展。例如,使用NUnit的Fl

c# - 如何序列化未设计为序列化的类?

我需要将一些类和数据结构保存到一个文件中。我的第一react是使用XML或二进制序列化,但这正在变成一场噩梦。我有一组不打算序列化的类(私有(private)setter、没有无参数构造函数、没有序列化属性、字典等)。考虑到我不能改变那些类(class),我该怎么办?是否有任何解决方法并仍然使用序列化?我是否必须编写所有代码来编写属性、集合等? 最佳答案 使用JavaScriptSerializer。它位于System.Web.Script.Serialization命名空间中,并在System.Web.Extensions.dll

c# - 检查形状之间碰撞的设计模式

我使用各种形状进行碰撞检测(Rectangle、Circle、Cone、Ring等)所有这些形状派生自基本抽象Shape类。我的游戏对象具有Shape类型的属性。classGameObject{(...)publicShapeCollisionShape{get;set;}}在初始化过程中,我决定每个对象将使用什么形状,例如:GameObjectperson=newGameObject();person.CollisionShape=newCircle(100);//100isradius现在,当我想检查两个对象是否相交时,我使用以下类:publicclassIntersectionC

c# - 当用户控件在公共(public)属性上具有 Browsable false 时,为什么设计器在将其添加到表单时将其设置为 null?

我有一个具有一些公共(public)属性的用户控件,其中一个是我设置[Browseable(false)]的对象。当我在VisualStudio的设计器中添加此控件时,生成的代码会将此对象设置为null。publicclassFoo:System.Windows.Forms.UserControl{[Browsable(false)]publicobjectBar{get;set;}[Browsable(true)]publicboolIsSomething{get;set;}...}privatevoidInitializeComponent(){...this.foo=newFoo

c# - 数据访问层的设计模式

您可能会觉得这是作业,对此我很抱歉。我进行了搜索,但找不到合适的答案。所以我的问题是:我有几个类,每个类都有一个保存方法。所以我为数据库处理创建了一个单独的类。namespaceHospitalMgt.Data{publicstaticclassDBConnection{publicstaticstringconstr="DataSource=ABD;InitialCatalog=HospitalMgt;UserId=sa;Password=123";publicstaticSqlConnectioncon;//publicstaticSqlCommandcom;publicstati

c# - VS 2010 - 使用设计器打开用户控件/表单时出错

C#、VS2010、WinForm应用程序:有时我确实会遇到这样的问题,即在打开我的某些控件/表单时收到错误消息。所有代码都可以编译并且应用程序可以正常运行。在设计器中打开控件给我:Thedesignerloaderdidnotprovidearootcomponentbuthasnotindicatedwhy.根据我的经验,我的代码通常没有正确初始化,例如未设置在运行时以某种方式可用但在使用设计器打开时不可用的属性。唯一的问题是,根本原因很难找到。问:当设计人员在VisualStudio2010中打开我的组件时,是否有机会以某种方式使用调试器?这会很有帮助,然后解决问题很可能只需要几

c# - 如何以编程方式从类型生成 xml 架构?

我正在尝试以编程方式从任何.net类型生成xs:schema。我知道我可以使用反射并通过遍历公共(public)属性来生成它,但是有内置的方法吗?例子:[Serializable]publicclassPerson{[XmlElement(IsNullable=false)]publicstringFirstName{get;set;}[XmlElement(IsNullable=false)]publicstringLastName{get;set;}[XmlElement(IsNullable=true)]publicstringPhoneNo{get;set;}}期望的输出:

c# - .NET 类设计问题

我有一个名为Question的类,它有一个名为Type的属性。基于这种类型,我想以特定方式将问题呈现为html(多项选择=单选按钮、多项答案=复选框等...)。我从单个RenderHtml方法开始,该方法根据问题类型调用子方法,但我认为将呈现逻辑分离到实现接口(interface)的单独类中可能会更好。但是,由于此类使用NHibernate持久保存到数据库中,并且接口(interface)实现依赖于属性,所以我不确定如何最好地布局该类。有问题的类:publicclassQuestion{publicGuidID{get;set;}publicintNumber{get;set;}pub

c# - 领域驱动设计适合我的项目吗?

我一直在阅读thisebookaboutDDD它说只有高度复杂的系统才适合DDD架构。这让我再次猜测我决定更多地转向DDD作为我的架构。我正在将经典的ASP应用程序逐节转换为.NET。它包括一个强大的产品分类方案和每天收到约100-200个订单的购物车,以及一个类似于YouTube的视频部分(视频和社交功能,如评分、评论等)。由于我已将其分块转换,因此我想将站点的每个区域视为单独的项目。该站点不断获得新功能,并且需要易于维护和更新。现在我只是使用一个基本的自制ADO.NETDAL,其中BLL和DTO充当公共(public)层。对于这个项目,使用与DDD不同的架构会更好吗?我是架构新手,

c# - ValidationRule 的执行集-C# 类设计 - 更好的方法

我有一个案例需要为不同的公司执行一组验证规则。将有针对一个公司的多个验证规则。所以我有如下表格结构公司IDCompanyName1ABC2DEF验证规则RuleIDName1Rule12Rule2公司验证规则映射MappingIDCompanyIdRuleID111212322我对每个验证规则都有单独的存储过程。因此,从我的C#代码中,我将找到与公司对应的所有验证规则,并需要执行与该规则关联的验证存储过程。所以我打算保留一个具有不同验证方法的接口(interface)“IValidation”。或者我是否必须为每个实现接口(interface)的验证创建不同的类谁能就此提出更好的方法。