Tag: oop

UML帮助C#设计原则

我在下面了解UML时遇到问题: 具体来说, PersistentSet和ThirdPartyPersistentSet之间的关系是什么? PersistentObject和ThirdPartyPersistentSet之间的关系是什么? 请注意,UML来自C#中的敏捷原则,模式和实践。作者:Martin C. Robert,Martin Micah 2006.第10章 提前致谢!

参数参数有什么不好?

我遇到的情况我认为只能通过使用ref参数来解决。 但是,这意味着当我只需要5%的ref参数提供的function时,将方法更改为始终接受ref参数。 这让我觉得“哇,疯了,必须找到另一种方式”。 我是傻瓜吗? ref参数可能导致哪些问题? 编辑 要求提供进一步的细节,我认为它们与我的要求完全无关,但我们走了。 我想要保存一个新实例(将使用以后可能使用的ID更新)或检索与某些逻辑匹配的现有实例并更新它,保存它然后更改新实例的引用以指向现有的。 代码可能会更清晰: protected override void BeforeSave(Log entity) { var newLog = entity; var existingLog = (from log in repository.All() where log.Stuff == newLog.Stuff && log.Id != newLog.Id select log).SingleOrDefault(); if (existingLog != null) { // update the time existingLog.SomeValue = entity.SomeValue; // remove the reference to the new […]

如果派生类inheritance了基类的私有成员,那么为什么不是构造函数呢?

我希望在c#中清楚地理解这个基本的OOPS概念。 在大多数Internet站点上,我读到派生类inheritance了基类的私有成员,但它无法访问这些成员。 派生类可以访问基类的public,protected,internal和protected内部成员。 即使派生类inheritance了基类的私有成员,它也无法访问这些成员。 但是,所有这些私有成员仍然存在于派生类中,并且可以执行与基类本身相同的工作。 例如,假设受保护的基类方法访问私有字段。 该字段必须存在于派生类中,以便inheritance的基类方法正常工作。 资料来源: http : //msdn.microsoft.com/en-us/library/ms173149.aspx 我的问题是,如果我们认为上面的内容是正确的,那么我们可以说“基类的构造函数是在派生类中inheritance的,但派生类只能使用base关键字通过自己的构造函数访问/调用它,并且这个构造函数不可用于外部世界在创建派生类的实例时“ 。 public class Employee { public int salary; public Employee(int annualSalary) { salary = annualSalary; } } public class Manager : Employee { public Manager(int annualSalary) : base(annualSalary) { //Add further instructions here. } } 因为要调用基类构造函数,它应该存在于该类中。 也许我的解释是错误的。 有人可以解释一下吗? 提前致谢!

什么时候应该写静态方法?

所以我理解静态方法或字段是什么,我只是想知道何时使用它们。 也就是说,在编写代码时,设计适合使用静态方法和字段。 一种常见的模式是使用静态方法作为静态工厂,但这可以通过重载构造函数来轻松完成。 正确? 例如: var bmp = System.Drawing.Bitmap.LoadFromFile(“Image01.jpg”); 至于静态场,是否最好使用singelton-objects?

在c#应用程序中存储数据的最佳方法是什么

我想制作Cookbook应用程序来存储和阅读(和更新)食谱,或其他任何东西来练习OOP编程和思考。 但是,我不确定,在这种情况下,以什么方式存储数据,食谱,是c#(Visual Studio Express)中最好的。 我想在程序中优化保存和加载数据,但我没有经验。 什么是最好的方法? 它是通过XML,SQL还是普通的TXT? 或者其他一些方式?

我如何在C#中释放对象

谁能告诉我如何在C#中释放对象? 例如,我有一个对象: Object obj1 = new Object(); //Some code using obj1 /* Here I would like to free obj1, after it is no longer required and also more importantly its scope is the full run time of the program. */ 感谢你的帮助

为什么静态类不能有非静态方法和变量?

当非静态类可以有静态方法和变量时,为什么静态类不能有非静态方法和变量? 在非静态类中使用静态方法和变量有什​​么好处? 虽然在非静态类中使用静态构造函数是可以理解的。

对象到对象映射实用程序

我喜欢干净地将公共和域对象 (因此,nHibernate在这里没有帮助)彼此隔离,这最终迫使我编写大量代码来将一个对象映射到另一个对象。 什么工具/插件可以让人们在.NET中手动执行这种映射?m每当我谷歌这个时候,它认为我想要做ORM,这不是我想要的。 谢谢! 编辑19:33CST:好的,我写了一个非常基本的应用程序(非常快速编写的代码)来演示我正在寻找的东西。 我只是想知道是否有一个VS插件可以为我做这个。 VS2008解决方案

Delphi类的C#

我知道之前已经问过这个问题,但我还没有看到一个简短明了的答案,所以我希望他们不会删除这个问题,现在我会得到一个明确的答案: 我目前在C#5.0工作; .NET 4.5; VS 2012.虽然我已经用C#做了很多,但我主要是Delphi人。 在Delphi中,我已经编写了数百个使用以下设计的类工厂(这里很简单): unit uFactory; interface type TClassofMyClass = class of TMyClass; TFactoryDict = TDictionary; var fDict:TFactoryDict; implementation procedure initDict; begin fDict:=TFactoryDict.create; fDict.add(myEnum1, TMyClass1); fDict.add(myEnum2, TMyClass2); fDict.add(myEnum3, TMyClass3); end; function Factory(const aEnum: TMyEnum): TMyClass; var ClassofMyClass: TClassofMyClass; begin if fDict.TryGetValue(aEnum, ClassofMyClass) then result := ClassofMyClass.Create(aParam); end; end. 现在:我如何在C#中做这样的事情?! 似乎C#中没有 ‘类’类型。 我错过了什么吗? […]

在实例化对象时以编程方式使用字符串作为对象名称

这是一个人为的例子,但我可以说我已声明了对象: CustomObj fooObj; CustomObj barObj; CustomObj bazObj; 我有一个字符串数组: string[] stringarray = new string[] {“foo”,”bar”,”baz”}; 我如何使用字符串数组以编程方式访问和实例化这些对象,使用类似foreach的方法进行迭代: foreach (string i in stringarray) { `i`Obj = new CustomObj(i); } 希望我想要了解的想法很清楚。 这可能在C#中吗? 提前致谢。