Tag: C#的

工作stream程还是不工作stream程?

我负责一个开发团队,他们即将开始开发一个轻量级的保险索赔系统。 系统涉及大量手动任务和业务工作stream程,我们正在使用Windows Workflow(.NET 4.0)。 业务领域的一个例子如下:保单持有人呼叫联络中心提出索赔。 这个“事件”触发了两个并行手动操作的子任务,可能需要很长时间才能完成。 检查客户是否存在欺诈行为 – 手动程序,运营商通过呼叫各种信用卡公司来检查和评估欺诈客户的潜力。 从这里子任务可以input多个子状态(检查进行中,失败的参考检查,通过的参考检查等) 将项目发送到维修中心 – 保单持有人提出索赔的项目被送到维修中心进行修理的手动过程。 从这里子任务可以input许多子状态(等待修复,进行中,修复,发布等)。 只有在每个子任务的状态达到预定义状态(基于业务规则)后,才能继续执行索赔。 从表面上看,Workflow确实是最好的技术select; 不过我在使用WF 4.0时有一些担心。 技能集 – 查看平均开发人员技能集,我没有看到许多了解或了解工作stream程的开发人员。 可维护性 – WF 4.0项目在社区内似乎没有什么支持,加上缺乏技能,引起对可维护性的关注。 进入壁垒 – 我有一种感觉,Windows Workflow有一个陡峭的学习曲线,并不总是那么容易接受。 新产品 – 由于.NET 4.0已经完全重写了工作stream程,因此我将该产品视为第一代产品,可能没有必要的稳定性。 声誉 – 上述版本的工作stream程没有得到很好的接受,认为难以发展,导致业务不景气。 所以我的问题是我们应该使用Windows工作stream(WF)4.0这种情况下,还是有一个替代技术(IE, 简单的状态机等),甚至更好的工作stream引擎使用?

为什么要添加一个方法添加一个模糊的调用,如果它不会涉及到模糊性

我有这个class public class Overloaded { public void ComplexOverloadResolution(params string[] something) { Console.WriteLine("Normal Winner"); } public void ComplexOverloadResolution<M>(M something) { Console.WriteLine("Confused"); } } 如果我这样称呼它: var blah = new Overloaded(); blah.ComplexOverloadResolution("Which wins?"); 它将Normal Winner写入控制台。 但是,如果我添加另一种方法: public void ComplexOverloadResolution(string something, object somethingElse = null) { Console.WriteLine("Added Later"); } 我得到以下错误: 在以下方法或属性之间的调用是不明确的:> Overloaded.ComplexOverloadResolution(params string[]) 'and Overloaded.ComplexOverloadResolution<string>(string) ' 我可以理解,添加一个方法可能会引入一个调用歧义,但这是两个已经存在的方法(params string[])和<string>(string)之间的歧义! 显然,歧义所涉及的两种方法都不是新增加的方法,因为第一种是参数,第二种是通用的。 […]

为什么必须以普通的Delegate参数的forms提供lambdaexpression式

采取方法System.Windows.Forms.Control.Invoke(委托方法) 为什么这给编译时间错误: string str = "woop"; Invoke(() => this.Text = str); // Error: Cannot convert lambda expression to type 'System.Delegate' // because it is not a delegate type 然而,这工作正常: string str = "woop"; Invoke((Action)(() => this.Text = str)); 当方法期望一个普通的代表?

什么是AppDomain?

什么是AppDomain ? AppDomain的好处是什么,或者为什么微软带来了AppDomain的概念,没有AppDomains的问题是什么? 请详细说明。

方便地在C ++中声明编译时string

在C ++编译期间能够创build和操作string有几个有用的应用程序。 尽pipe可以在C ++中创build编译时string,但是这个过程非常麻烦,因为string需要被声明为可变字符序列,例如 using str = sequence<'H', 'e', 'l', 'l', 'o', ', ', 'w', 'o', 'r', 'l', 'd', '!'>; 诸如string连接,子串提取等许多操作可以很容易地实现为对字符序列的操作。 是否可以更方便地声明编译时string? 如果不是的话,有没有一个scheme可以方便的声明编译时间string? 为什么现有的方法失败 理想情况下,我们希望能够声明编译时间string如下: // Approach 1 using str1 = sequence<"Hello, world!">; 或者,使用用户定义的文字, // Approach 2 constexpr auto str2 = "Hello, world!"_s; decltype(str2)将有一个constexpr构造函数。 方法1的一个更复杂的版本可以实现,利用这个事实,你可以做到以下几点: template <unsigned Size, const char Array[Size]> struct foo; 然而,数组需要有外部链接,所以为了让方法1工作,我们必须写这样的东西: /* […]

什么平台有8位字符以外的东西?

SO上的某个人偶尔指出char (又称“字节”)不一定是8位 。 似乎8位char几乎是通用的。 我认为对于主stream平台来说,有必要有一个8位char来确保它在市场上的可行性。 现在和历史上,哪个平台使用的char不是8位,为什么它们与“正常”8位不同呢? 在编写代码时,考虑跨平台的支持(例如,对于通用库),值得给予非8位char平台值得考虑什么? 在过去,我遇到了一些char为16位的ADI公司的DSP。 DSP是我想的一个小众体系结构。 (再次,当时手工编译的汇编程序很容易打败可用的C编译器可以做的事情,所以我在那个平台上并没有真正的C经验。)

是'int main' 一个有效的C / C ++程序?

我问,因为我的编译器似乎这样认为,即使我不这样认为。 echo 'int main;' | cc -xc – -Wall echo 'int main;' | c++ -x c++ – -Wall Clang不会发出任何警告或错误,而gcc只会发出温和的警告: 'main' is usually a function [-Wmain] ,但只有编译为C.指定-std=似乎并不重要。 否则,它编译和链接罚款。 但是在执行时,它会立即用SIGBUS (对我来说)终止。 什么应该main()返回在C和C + + (优秀)答案阅读? 并通过语言规范快速grep,它肯定会在我看来,主要function是必需的。 但gcc的-Wmain ( 通常是一个函数)的错误(这里错误的-Wmain )似乎可能是-Wmain 。 但为什么? 是否有一些奇怪的边缘或“历史”使用这个? 任何人都知道什么给? 我想我的观点是,我真的认为这应该是一个托pipe环境中的错误 ,呃?

从app.config文件读取

我正在尝试从下面的app.config文件使用代码读取StartingMonthColumn和CategoryHeadingColumn ConfigurationSettings.AppSettings["StartingMonthColumn"] 但它返回null,也ConfigurationSettings.AppSettings.Count返回零 请帮我在Windows应用程序中阅读这个 <configuration> <configSections> <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > <section name="CTARepository.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> </sectionGroup> </configSections> <userSettings> <CTARepository.Properties.Settings> <setting name="Setting" serializeAs="String"> <value /> </setting> </CTARepository.Properties.Settings> </userSettings> <appSettings> <add key="StartingMonthColumn" value="7"/> <add key="CategoryHeadingColumn" value="1"/> </appSettings> </configuration>

为什么Convert.ToString(null)返回一个不同的值,如果你投了null?

Convert.ToString(null) 回报 null 正如我所料。 但 Convert.ToString(null as object) 回报 "" 为什么这些不同?

在C中创build自己的头文件

任何人都可以解释如何创build一个头文件在C中的一个简单的例子,从头到尾。