Tag: oop

有没有人想过以这种方式使用Blackboard Pattern?

有没有人对“实用程序员”第165页对Blackboard概念有任何想法? 我想要几个小的子系统(DLL和EXE)大多是相互独立的。 有些程序集将由所有EXE使用。 这些程序集几乎都使用相同的数据库。 而不是使用接口进行这些程序集之间的通信,Blackboard类型模式不会提供更多的独立性吗? 我正在考虑一些通过事件通知并且所有子系统通信都通过它的中介类型构造。 这使syb系统非常独立。 调解员将保留其应广播的所有通知的名称。 然后,订阅者将按名称侦听特定事件,但始终订阅相同(或可能传递名称作为参数)中介事件。 以下是对它的更多讨论: http : //www.experts-exchange.com/Programming/Languages/C_Sharp/Q_22829492.html

使用Interface +抽象类进行inheritance设计。 好的做法?

我不确定如何标题这个问题,但基本上我有这样的界面: public interface IFoo { string ToCMD(); } 几个实现IFoo的absract类: public abstract class Foo : IFoo { public abstract string ToCMD(); } public abstract class Bar : IFoo { public abstract string ToCMD(); } 那么inheritanceFoo和Bar的类: public class FooClass1 : Foo { public override string ToCMD() {return “Test”;} } ///there are about 10 foo classes. public class […]

反思真的很慢,我不应该在它有意义的时候使用它吗?

可能重复: .NETreflection的代价是多少? 我遇到的问题的“优雅”解决方案是使用属性将类及其属性与另一个类相关联。 问题是,要将它转换为另一个,我必须使用reflection。 我正在考虑将其托管在云端的服务器端应用程序。 我听过很多关于“reflection很慢,不使用它”的隆隆声,慢得多慢? 它是如此占用CPU密集度以至于它会大大增加我的CPU时间,以至于我真的要为我决定在云端架构底部使用reflection付出代价吗?

在XmlSerializer中使用generics

在C#中使用XML序列化时,我使用如下代码: public MyObject LoadData() { XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyObject)); using (TextReader reader = new StreamReader(settingsFileName)) { return (MyObject)xmlSerializer.Deserialize(reader); } } (以及类似的反序列化代码)。 它需要铸造而且不是很好。 有没有办法,直接在.NET Framework中使用generics与序列化? 也就是说写下这样的东西: public MyObject LoadData() { // Generics here. XmlSerializer xmlSerializer = new XmlSerializer(); using (TextReader reader = new StreamReader(settingsFileName)) { // No casts nevermore. return xmlSerializer.Deserialize(reader); } }

面向对象编程:寻找好的教程

我厌倦了只使用示例枚举概念的教程。 一些教程如何显示错误的做法,然后是正确的做事方式? 以这种方式学习接口,委托,抽象类,单例等等事情会很棒。 在线阅读一些干净的代码会很棒,但很难找到…… 任何建议? 我用C#,。net,MS技术开发……

方法返回一个接口

大家好, 我正在考虑这行代码 IDataReader myReader = questDatabase.ExecuteReader(getQuest); 我正在使用DAAB,但我无法理解方法ExecuteReader(DbCommand)返回IDataReader接口的意义和含义是什么。 任何人都可以解释,拜托

WCF重试代理

我正在努力寻找实现WCF重试的最佳方法。 我希望尽可能让客户体验尽可能干净。 我知道有两种方法(见下文)。 我的问题是:“ 我缺少第三种方法吗?也许是一种普遍接受的做法? ” 方法#1 :创建实现服务接口的代理。 对于每次调用代理,请执行重试。 public class Proxy : ISomeWcfServiceInterface { public int Foo(int snurl) { return MakeWcfCall(() => _channel.Foo(snurl)); } public string Bar(string snuh) { return MakeWcfCall(() => _channel.Bar(snuh)); } private static T MakeWcfCall(Func func) { // Invoke the func and implement retries. } } 方法#2 :将MakeWcfCall()(上面)更改为public,并让消费代码直接发送func。 我不喜欢方法#1,每次接口更改时都必须更新Proxy类。 我不喜欢方法#2的是客户端必须将其调用包装在func中。 我错过了更好的方法吗? […]

什么是F#缺乏OO或势在必行?

很多时候我听说F#不适合特定的任务,比如UI。 “使用正确的工具”是一个常见的短语。 除了缺少WinForms / WPF / ORM设计器等工具之外,我不确定F#到底缺少什么 – 老实说! 然而,特别是在UI方面,我被告知C#做得更好。 那么,在强制使用F#时,F#的实际差异和遗漏是什么? 这是我提出的列表: 大量缺少工具支持 F#仍然是测试版 你的开发人员不知道F# 我不想考虑这些要点,因为它们并不是F#的内在特征。 Mutable需要“可变”或需要ref,ref需要! 解除引用 Mutables赋值< – 和ref使用:=(它们都是1个字符而不仅仅是=) val需要DefaultValueAttribute来获取默认值 F#不会发出隐式接口 受保护的成员更难以处理 没有自动属性 抽象类上实现的虚拟成员需要两个定义 引用到LINQ-Expression-Trees会产生与C#/ VB略有不同的树(对于期望以特定格式表达其表达式的API而言很烦人) 没有stackalloc F#没有?:条件运算符 F#中的指针可能被认为更麻烦 代表/事件可能被认为更加繁琐(我认为它们更容易,但至少它们是不同的) 没有自动类型转换(比如int to float或者隐式转换) Nullable没有特殊的语法支持(C#的?类型注释和??运算符,以及在nullable上使用运算符。) 没有自动向上扩展到普通基类或装箱(例如:让x:obj =如果为真,那么其他为“hi”//这不会是类型检查) 没有警告就不能丢弃值(“忽略”以绕过它) 没有C风格的语法:) 问题:哪些是编写命令式或OO代码的障碍? 为什么(简短的例子)? 我错过了哪些? 什么是最好的解决方法,为什么他们还不够? 请注意 ,我不是在谈论编写所谓的惯用语F#,我当然不是在谈论函数式编程。 我更感兴趣的是“如果我要强迫自己在F#中编写UI或命令式/ OO代码,使用F#OO /命令式function和类类型,最痛苦的是什么?” 奖励如果您不了解F#但使用C#或VB.NET并认为它是某种情况下更好的工具,请指出您觉得有吸引力的特定语言function和语法。

在对象中初始化一个集合?

如果对象具有属于集合的属性,那么对象是应该创建集合对象还是让使用者检查null? 我知道消费者不应该假设,只是想知道大多数人是否创建了集合对象,如果它从未被添加到。

编程范式之间的差异和相似之处

在过去的4年里,我一直在做开发人员,在大学学习软件开发之前的4年。 在我4年的行业中,我已经在VB6中做了一些工作(这是一个笑话),但大多数都是在C#/ ASP.NET中。 在此期间,我已经从“对象感知”程序范式转变为面向对象范式。 最近我对其他编程范例感到好奇,所以我想我会问其他开发人员他们对这些范例之间的相似点和不同点的看法,特别是OOP? 在OOP中,我发现人们非常关注概念之间的关系和逻辑交互。 对于其他范例,你必须有哪些思维框架?