Questions tagged «c#»

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

1
在{}中创建对象参数?
我正在尝试从书中解码一段代码: List<Person> people = new List<Person>() { new Person {FirstName="Homer",LastName="Simpson",Age=47}, new Person {FirstName="Marge",LastName="Simpson",Age=45} }; Person只是他们制作的一个简单类,其中包含许多字段:名称,姓氏等。 我不明白的是,我们不是将参数发送到非花括号中的Person的构造函数吗?我尝试复制此代码,但似乎没有成功,有人吗? 感谢您的输入。
15 c# 


7
用C#代码创建HTML的最佳方法是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我相信标记应该保留在标记中,而不是在后面的代码中。 我遇到了一种情况,我认为可以在后面的代码中构建HTML。我想就最佳实践是什么或应该是什么达成共识。 什么时候可以在后面的代码中构建html?什么是创建此html的最佳方法?(示例:字符串,StringBuilder,HTMLWriter等)
15 c#  asp.net  html 

7
我应该在班级文件标头中包含什么
我正在寻找有关Entity,Business Logic和Data Access类的信息丰富的类文档格式。 我从这里发现以下两种格式 格式1 ///----------------------------------------------------------------- /// Namespace: <Class Namespace> /// Class: <Class Name> /// Description: <Description> /// Author: <Author> Date: <DateTime> /// Notes: <Notes> /// Revision History: /// Name: Date: Description: ///----------------------------------------------------------------- 格式2 // =============================== // AUTHOR : // CREATE DATE : // PURPOSE : // SPECIAL NOTES: // …

4
有关类型映射和扩展方法的最佳实践
我想问一些有关映射类型和在C#中使用扩展方法的最佳实践的问题。我知道这个主题在过去几年中已被讨论过多次,但是我读了很多帖子,但仍然有疑问。 我遇到的问题是扩展具有“转换”功能的类。假设我有“ Person”类,该类表示将由某些逻辑使用的对象。我还有一个“客户”类,代表来自外部API的响应(实际上会有多个API,因此我需要将每个API的响应映射到常见类型:Person)。我可以访问两个类的源代码,并且理论上可以在那里实现我自己的方法。我需要将客户转换为人,以便可以将其保存到数据库。该项目不使用任何自动映射器。 我有4种可能的解决方案: Consumer类中的.ToPerson()方法。这很简单,但是对我来说似乎是在打破“单一责任”模式,尤其是Consumer类也映射到其他类(某些其他外部API要求),因此它需要包含多种映射方法。 Person类中的构造函数,以Consumer为参数。也很容易,似乎也打破了单一责任模式。我需要有多个映射构造函数(因为将有另一个API的类,提供与Consumer相同的数据,但格式略有不同) 具有扩展方法的Converters类。这样,我可以为Consumer类编写.ToPerson()方法,并且当另一个API与其自身的NewConsumer类一起引入时,我可以编写另一个扩展方法并将其全部保存在同一文件中。我听过一种意见,即扩展方法通常是邪恶的,仅在绝对必要时才应使用扩展方法,这就是使我受挫的原因。否则我喜欢这个解决方案 转换器/映射器类。我创建了单独的类来处理转换并实现将源类实例作为参数并返回目标类实例的方法。 综上所述,我的问题可以简化为问题的数量(全部与我上面所述的内容相关): 是否将转换方法放入(POCO?)对象中(例如Consumer类中的.ToPerson()方法)是否被视为打破单一责任模式? 在(DTO类)类中使用转换构造函数是否被视为打破单一责任模式?尤其是如果可以从多种源类型转换此类,那么是否需要多个转换构造函数? 在访问原始类源代码的同时使用扩展方法是否被视为不良做法?这样的行为可以用作分隔逻辑的可行模式吗?还是反模式?

5
在.NET应用程序之间共享代码的最有效方法是什么?
在我们的工作中,我们有几个不同的.net应用程序,它们共享许多基本功能。我们已经使用干净的n层体系结构构建了这些应用程序,但是到了那一刻,我们意识到我们已经在不同的时间重新实现了相同的功能。显然这违反了DRY,我们希望对此进行更正。我们已经使用Nuget成功实现了通用粘合代码(连接IoC,日志记录,设置),但是我们也希望在所有应用程序之间共享数据和业务层。想法是,UI仅处理其实际需要的业务层部分。 起初这似乎是一个直截了当的问题,但是持续的开发可能会带来一些陷阱,我们不确定如何进行。假设我们建立了一个业务层来全部统治。为简便起见,我将其称为“基金会”。我们将我们的应用程序移植为使用Foundation,并且一切都很好。该基金会通过nuget分发给轻量级UI层,我们看起来很好。但是随后我们开始向应用程序中添加功能,并且遇到了麻烦。 假设我们正在开发Project A,并且添加了一项需要更改Foundation的新功能。我们对基础(Foundation-A)进行更改,并将它们作为不稳定的程序包推送到nuget提要。项目A获得了最新的nuget包,一切都很好。同时,另一位开发人员正在开发ProjectB。他从源代码控制中获得了最新的Foundation,但从一个稳定的分支中获取了最新的Foundation,因此它没有Project A的更改。他进行了更改并创建了Foundation-B。一切都很好。但是随后我们发现,Foundation-A和Foundation-B实施功能实际上可以共享代码,因此我们将它们组合在一起。同时,Foundation-C本身也有自己的变化。最终,Foundation-B可以投入生产,因此我们将其推出。但是然后我们需要更新生产A,B, 这似乎可行,但是我们担心使用不同的数据库模式,并使Foundation信息库的各个分支以及Project A,B和C信息库之间的所有内容保持同步。似乎可能需要大量的手动工作,这可能会出现错误。我希望这尽可能自动化。 这是我们使用的堆栈:C#,具有持续集成功能的TFS,Nuget。我们的应用程序是所有类型的ASP.NET应用程序。如果这会使事情变得更容易,我们愿意研究不同的SCM。 我正在寻找使Nuget对我们不同的源代码分支保持理智的方法。我们不想意外地将开发代码推入生产环境,因为我们引用了错误的Nuget包。

2
如何防止我的可执行文件被AV视为恶意软件或病毒?
我正在创建一个软件,该软件将在Windows上运行,并像游戏的启动器一样,充当客户端PC中的自动更新程序和文件验证程序。 我不明白的一件事是,为什么我的防病毒软件(Avast)认为我的exe文件很危险,并且在不要求将其放入沙箱中以安全使用的情况下不会启动它。 我的软件有没有应遵守的规则,被视为良好的规则,还是应该为某些数字签名和其他东西支付数百美元? 我在MS Visual Studio 2010中使用C#。 VirusTotal报告。使用WebClient()类,不进行DLL注入,可用作远程文件下载器。 并不是像它警告病毒一样,而是“建议”将其沙箱化。看截图:

4
如何有效搜索某个地标范围内的所有地标?
我正在尝试从一个地理搜索项目开始,该项目将查找特定地标的10公里/英里(对于这个故事而言并不重要)中的所有地标。 例如,假设我有一个包含1,000,000个地标的数据库。为了找到具有特定坐标的地标10英里范围内的所有地标,我必须计算搜索到的地标与1,000,000个地标之间的距离。 有更好的方法吗? 我当时想过的替代方法是对地标进行分类,例如国家,地区,城市,邻里,商业,历史等,以便企业可以成为邻里或城市的一部分。城市是一个地区,一个国家等的一部分。这可以缩小计算范围,但是为了快速,准确地进行搜索,它仍然看起来像需要做很多工作。 Google Maps API可以提供帮助吗?

7
原始vs类代表简单的域对象?
什么时候使用特定于域的对象与普通字符串或数字的通用准则或经验法则是什么? 例子: 年龄层vs整数? FirstName类与String? 唯一ID与字符串 PhoneNumber类vs字符串vs长? 域名类与字符串? 我认为大多数OOP从业人员肯定会说PhoneNumber和DomainName的特定类。有关使它们变得有效以及如何进行比较的更多规则,使简单的类更易于处理和更安全。但是对于前三个,还有更多的争论。 我从来没有遇到过“年龄”类,但是有人认为它必须是非负数是有道理的(好吧,我知道您可以为负数年龄辩护,但这是一个很好的例子,它几乎等同于原始整数)。 字符串通常代表“名字”,但并不是完美的,因为空字符串是有效字符串,但不是有效名称。比较通常会忽略大小写。当然,有一些方法可以检查是否为空,不区分大小写,等等,但这需要使用者执行此操作。 答案是否取决于环境?我主要关心的是企业/高价值软件,该软件可以生存和维护超过十年。 也许我想得太多了,但是我真的很想知道是否有人对何时选择类还是原始有规则。

2
为什么要使用具有类型约束的泛型方法而不是类型本身?
在另一个StackExchange问​​题中,我注意到有人在使用此原型: void DoSomething<T>(T arg) where T: SomeSpecificReferenceType { //Code.... } 请记住,只有一个类型约束(SomeSpecificReferenceType),这样写而不是简单地有什么区别和好处? void DoSomething(SomeSpecificReferenceType arg) { //Code.... } 在这两种情况下,arg都将进行编译时类型检查。在这两种情况下,方法的主体都可以安全地依赖arg编译时已知的特定类型的知识(或作为其后代)。 这是开发人员在学习普通继承之前热衷于泛型的一种情况吗?还是有一个合理的理由解释为什么这样写方法签名?
14 c#  .net  generics 

2
什么时候应该使用C#的隐式类型转换运算符?
在C#中,我们可以像这样重载隐式转换运算符(来自MSDN的示例): struct Digit { /* ... */ public static implicit operator byte(Digit d) // implicit digit to byte conversion operator { /* ... */ } } 因此,我们可以拥有一个类型,一个自定义值类型,将自己神奇地转换为另一种(不相关的)类型,从而使观众感到困惑(直到他们凝视到后台并看到隐式转换操作符为止)。 我不喜欢让任何阅读我的代码的人迷惑不解。我认为没有很多人这样做。 问题是,隐式类型转换运算符的用例是什么,它们不会使我的代码更难理解?
14 c#  operators 

4
允许使用显式接口实现在C#中隐藏成员吗?
我知道如何在C#中使用接口和显式接口实现,但是我想知道隐藏某些不经常使用的成员是否被认为是不好的形式。例如: public interface IMyInterface { int SomeValue { get; set; } int AnotherValue { get; set; } bool SomeFlag { get; set; } event EventHandler SomeValueChanged; event EventHandler AnotherValueChanged; event EventHandler SomeFlagChanged; } 我事先知道这些事件虽然有用,但很少使用。因此,我认为通过显式实现将它们隐藏在实现类之外以避免IntelliSense混乱是有意义的。

2
为什么C#比Java具有更多的功能?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 请注意,这并不意味着是Java vs. C#参数。我是一位没有C#经验的Java程序员,出于好奇而问。 我在C#上做了一些阅读,似乎它比Java具有更多的功能。一些例子: 类型推断。 dynamic 关键词。 代表们 可选参数。 Lambda和LINQ (我实际上不知道它们是什么)。 属性。 但是,Java实际上没有C#所没有的任何功能。 我的问题是:为什么C#比Java具有更多的本机功能?为何Java多年来一直没有添加其中的某些内容,例如Properties或type Inference?Java语言设计人员是否采用更简单的方法?这是什么原因呢?
14 java  c#  languages 

5
我应该在实现之前编写接口API吗?
最近,我一直在研究更多的“有组织的”编程,并且我一直在学习应该对接口而不是对实现进行编程。考虑到这一点,在可能的情况下为项目编写实现之前,最好在接口中“略过”项目吗? 如果是这种情况,那么在使用第三方库(即Lidgren)的情况下,我是否也应该将它们包装在接口中并通过IOC容器进行解析,还是可以将它们公开给接口?

4
用于将各种源类型和各种目标类型导入数据的设计模式
我必须设计和构建可以处理以下内容的导入脚本(在C#中): 从各种来源(XML,XSLX,CSV)读取数据 验证数据 将数据写入各种对象类型(客户,地址) 数据将来自多个来源,但一个来源将始终具有一种导入格式(csv,xml,xslx)。导入格式因来源而异。将来可能会添加新的导入格式。目标对象类型始终相同(客户,地址和其他)。 我一直在考虑使用泛型,并且阅读了一些有关工厂模式的信息,但是我在这个领域非常菜鸟,所以任何建议都值得欢迎。 解决该问题的合适设计模式是什么?

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.