Questions tagged «c#»

C#是Microsoft与.NET平台并行创建的一种多范式,托管的,垃圾回收的面向对象编程语言。

3
OO中传递的消息是什么?
我一直在研究OO编程,主要使用C ++,C#和Java。我以为我对封装,继承和多态性有了很好的了解(以及在此站点上阅读了很多问题)。 似乎突然出现的一件事是“消息传递”的概念。显然,在以当今主流语言进行OO编程时,并没有使用此方法,但是Smalltalk支持了这种方法。 我的问题是: 什么是消息传递?(有人可以举一个实际的例子吗?) C ++,C#或Java是否支持这种“消息传递”?
35 java  c#  c++  object-oriented 

2
在ASP.NET MVC中分离数据访问
我想确保我遵循行业标准和最佳实践,这是我第一次真正接触MVC。在这种情况下,它是使用C#的ASP.NET MVC。 我将对我的模型使用Entity Framework 4.1和代码优先对象(数据库已经存在),因此将有一个DBContext对象用于从数据库中检索数据。 在我在asp.net网站上进行的演示中,控制器中包含数据访问代码。这对我来说似乎不正确,尤其是在遵循DRY(不要重复自己)做法时。 例如,假设我正在编写要在公共图书馆中使用的Web应用程序,并且有一个用于创建,更新和删除目录中书籍的控制器。 某些操作可能需要一个ISBN,并且需要返回“ Book”对象(请注意,这可能不是100%有效的代码): public class BookController : Controller { LibraryDBContext _db = new LibraryDBContext(); public ActionResult Details(String ISBNtoGet) { Book currentBook = _db.Books.Single(b => b.ISBN == ISBNtoGet); return View(currentBook); } public ActionResult Edit(String ISBNtoGet) { Book currentBook = _db.Books.Single(b => b.ISBN == ISBNtoGet); return …



2
命名约定DAL,BAL和UI层
我正在开发具有以下几层的典型Web应用程序 UI层(MVC) 业务逻辑层(BAL) 数据访问层(DAL) 每个层都有自己的DTO对象,包括BAL和DAL。我对此的疑问如下 DAL返回的DTO只需转换为BAL中的相应DTO,然后发送到UI层即可。在某些情况下,DTO对象的属性和结构都是相同的。在这种情况下,最好将DAL中的DTO简单地返回到UI层而不包含中间对象。 命名这些DTO对象和每一层中其他对象的最佳方法是什么。我应该使用一些前缀,例如DTOName,ServiceName吗?我之所以要求使用前缀的原因是,如果解决方案中的类与Framework中的其他类以及前缀不冲突,那么我更容易理解每​​个类所属的位置吗?
35 c#  design  naming 


5
调用相同类中其他方法的单元测试方法的最佳方法
我最近正在和一些朋友讨论以下两种方法中哪一种最适合从同一个类中的方法中返回结果或调用同一个类中的方法。 这是一个非常简化的示例。实际上,功能要复杂得多。 例: public class MyClass { public bool FunctionA() { return FunctionB() % 2 == 0; } protected int FunctionB() { return new Random().Next(); } } 因此,要测试这一点,我们有2种方法。 方法1:使用函数和操作来替换方法的功能。例: public class MyClass { public Func<int> FunctionB { get; set; } public MyClass() { FunctionB = FunctionBImpl; } public bool FunctionA() …

1
DRY不相关但几乎相同的代码
我有一些几乎相同的代码,但是在主变量上使用绝对不同的类型,它们之间没有继承。具体来说,我正在用Roslyn针对C#和VB.NET编写具有以下类型的分析器: Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax 我想知道是否因为代码在做相同的事情,我应该将其保持为DRY,将其尽可能少地拆分为单独的(但类型除外),还是将它们完全分开,因为这两种方法是不相关,将来的更改可能会迫使一个版本更改,而另一个版本则不能更改(尽管这不太可能)? 编辑:大约一年后,我遇到了同样的问题,罗斯林(Roslyn)团队帮助我解决了这个问题:编写一个采用泛型并具有TAttributeSyntax完成大部分工作的参数的基类。然后,使用最少的需要特定类型的数据编写派生类。
34 c#  design  dry 

3
Java开发是否通常比C#/。NET涉及更多的子类化?
我最近开始研究Android开发。这使我回到了Java软件开发领域。我承认,上一次我使用Java时,我对OOP的了解不如现在(我认为)那么多。 在我的职业生涯中主要使用C#之后,我注意到Java和C#在继承使用方式方面的惊人差异。 在C#中,似乎在大多数情况下都可以避免继承。通常,可以通过使用.NET框架的具体类来完成当前的任务。 在Java中,从我从代码示例中收集的信息来看,Java框架似乎提供了许多接口或抽象类,这些接口或抽象类将由开发人员实现/扩展。 这似乎太大了,不能简单地归结为风格。这背后的原因是什么?我觉得直到我理解这一点,我才会写干净的Java代码。 此外,这是否仅限于Android SDK还是Java范围内的OOP方法? 或换种说法, 这两种语言(似乎鼓励)比另一种或多或少使用继承的设计是什么? 如果语言对继承的处理相同,并且假设我的观察是有效的,则意味着这与框架/库的设计有关,而与语言无关。这种设计的动机是什么?

9
C#中的构造函数参数验证-最佳做法
构造函数参数验证的最佳实践是什么? 假设有一个简单的C#: public class MyClass { public MyClass(string text) { if (String.IsNullOrEmpty(text)) throw new ArgumentException("Text cannot be empty"); // continue with normal construction } } 抛出异常是否可以接受? 我遇到的替代方法是在实例化之前进行预验证: public class CallingClass { public MyClass MakeMyClass(string text) { if (String.IsNullOrEmpty(text)) { MessageBox.Show("Text cannot be empty"); return null; } else { return new …

11
Java与C#-生产率透视图
如果您有使用Java的多年经验,以及使用C#和.NET的多年经验,那么我对您在这两种环境之间的软件开发生产力差异方面的观点表示赞赏。我们的一位客户正在考虑更换其现有的软件解决方案。由于更换将需要大约。根据Java或.NET之间的生产率差异,选择10到15个工作年的工作可能会显着影响所需的投资和上市时间。 您能否向我们提供Java和C#/。NET之间软件开发生产率差异的指示?我希望收到如下答复: 我的经验是基于X的Java工作经验和X的C#/。NET工作经验。如果考虑以下因素,则Java的生产力比Java#高出X%,而C#.NET或C#/。NET的生产力比Java高出X%。

3
在ASP.NET MVC中对控制器进行单元测试是否有真正的价值?
我希望这个问题能提供一些有趣的答案,因为这是困扰我一段时间的问题。 在ASP.NET MVC中对控制器进行单元测试是否有真正的价值? 我的意思是,在大多数情况下(而且我不是天才),我的控制器方法即使在最复杂的情​​况下也是如此: public ActionResult Create(MyModel model) { // start error list var errors = new List<string>(); // check model state based on data annotations if(ModelState.IsValid) { // call a service method if(this._myService.CreateNew(model, Request.UserHostAddress, ref errors)) { // all is well, data is saved, // so tell the user …

6
我想编写一个“最终洗牌”算法来对我的mp3集合进行排序
我正在寻找伪代码建议,以避免标题和艺术家重复的方式对mp3文件进行排序。我听低吟的歌手-弗兰克·辛纳屈(Frank Sinatra),托尼·贝内特(Tony Bennett),埃拉·菲茨杰拉德(Ella Fitzgerald)等歌唱旧唱片。每位歌手都录制许多相同的歌曲-《飞向月球》,《今夜的样子》,《星尘》等。我的目标是安排歌曲(或订购播放列表),并在歌手和歌曲名称之间留出最大的空间。因此,如果我有2000首歌曲,而Ella有20首,我想每100首歌曲只听一次她。如果有10位歌手演唱《飞向月球》,我希望每200首歌曲中听到一次。当然,我想结合这两个要求来创建我的“最终洗牌”。 我知道这是一个相当广泛的问题。我尚未开始对其进行编程,因此我只是在寻找采用一种好的方法的建议。关于均匀间隔其他歌曲属性,我实际上还有一些其他要求,但这里不再赘述。 首先,我正在修改在这里找到的代码,以处理mp3文件和读取ID3标签。 我编写了一个小应用程序,使用下面的parsifal回答可以满足我的需求。我还在这里写了一个后续问题。感谢您的所有好评!

8
SOLID,避免贫血领域,依赖注入?
尽管这可能是与编程语言无关的问题,但我对针对.NET生态系统的答案很感兴趣。 这是这种情况:假设我们需要为公共管理开发一个简单的控制台应用程序。该应用程序是关于车辆税的。他们(仅)具有以下业务规则: 1.a)如果车辆是汽车,而车主最后一次缴税是在30天前,则车主必须再次缴税。 1.b)如果车辆是摩托车,且车主上次缴税是60天前,则车主必须再次缴税。 换句话说,如果您有汽车,则必须每30天支付一次费用;如果您有摩托车,则必须每60天支付一次费用。 对于系统中的每辆车,应用程序都应测试这些规则并打印不满足这些规则的车辆(车牌号和车主信息)。 我想要的是: 2.a)符合SOLID原则(尤其是开放/封闭原则)。 我不想要的是(我认为): 2.b)一个贫血的领域,因此业务逻辑应该放在业务实体内部。 我从这个开始: public class Person // You wanted a banana but what you got was a gorilla holding the banana and the entire jungle. { public string Name { get; set; } public string Surname { get; set; } } public …
33 c#  .net  design  architecture 

4
为什么Web Api不支持WSDL类型?
因此,我只是开始使用.Net WebApi,我要立即注意到的一件事是,没有合同定义API的外观和使用方式(每个动作的请求/响应),通常采用以下形式:用于WCF / Soap的WSDL。 在我看来,这将是非常有价值的事情,并使您的API使用者的生活变得更加轻松。 有没有理由吗?我是否不了解编程范例或原理?有什么办法可以创造一个?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.