草庐IT

why-you-should-replace-enum-with-

全部标签

c# - 是否可以创建通用的 Int-to-Enum 转换器?

我想说如果int值等于(int)MyEnum.Value,则将其解析为True我知道我可以制作一个返回(MyEnum)intValue的Converter,但是我必须为我在DataTriggers中使用的每个Enum类型制作一个转换器.是否有一种通用的方法来创建可以提供这种功能的转换器? 最佳答案 可以以可重用的方式在枚举值和它们的基础整数类型之间创建一个转换器——也就是说,您不需要为每个枚举类型定义一个新的转换器。为此,Convert和ConvertBack提供了足够的信息。publicsealedclassBidirection

c# - Entity Framework 6 代码优先 : what is the best implementation for a baseobject with 10 childobjects

我们首先有一个包含10个子对象和EF6代码的基础对象。在这10个子对象中,5个只有少数(额外)属性,5个具有多个属性(5到20个)。我们将其实现为每个类型一个表,因此我们有一个基本表和每个child1个表(总共10个)。但是,这会在各处创建带有selectcase和unions的巨大选择查询,这也需要EF6秒来生成(第一次)。我读到了这个问题,同样的问题也存在于每个具体类型场景中。所以我们剩下的是每个层次结构的表,但这会创建一个包含大量属性的表,这听起来也不太好。是否有其他解决方案?我考虑过当我想从所有子对象/记录中获取所有项目时可以跳过继承并创建一个联合View。还有其他想法吗?

c# - c#除了enum还能用什么

所以目前有一个用于应用程序状态的枚举。但是,将它用于ui时感觉有些不对劲。填充下拉列表时整数和字符串之间的许多转换。我可以使用扩展方法或类型转换器并继续使用枚举,如果枚举中有多个单词,这将很有帮助。我想在我深入挖掘之前,我会问一下是否可以填充一个可能的洞。谢谢。 最佳答案 我的团队在我们最近的项目中遇到了这个问题。我们保留了枚举,​​因为它们是用于已知常量值的有限列表的东西,但我们做了一些事情使它们对开发人员更友好:我们用包含每个枚举常量的“友好名称”的[Description()]属性修饰枚举值。我们创建了一个GetDescrip

c# - 为什么 with() 构造不包含在 C# 中,而它在 VB.NET 中真的很酷?

我是C#开发人员。我真的很喜欢花括号,因为我来自C、C++和Java背景。但是,我也喜欢.NET家族的其他编程语言,例如VB.NET。如果您已经在.NET中编程了一段时间,那么在C#和VB.NET之间来回切换并不是什么大问题。在我工作的公司里,这是非常普遍的做法。作为C#专家,我非常喜欢VB.NET编译器提供的XML文字和with关键字。我希望Microsoft也将这些功能包括在C#中。我很好奇,其他开发人员对此有何评论! 最佳答案 我个人不喜欢WITH在构造之后使用它-如果您需要在对象初始化后对它执行几项操作,通常该行为应该封装在

c# - LINQ to Entities 中的 Enum.HasFlag?

我有一面旗帜,例如[Flags]publicenumDaysOfTheWeek{Monday=1,Tuesday=2,Wednesday=4,Thursday=8,Friday=16,Saturday=32,Sunday=64}如果我想使用Linq基于包含特定标志的变量进行过滤,我可以尝试使用Enum.HasFlag在lambda语句中过滤多个标志,例如DaysOfWeekweekendFilter=DaysOfTheWeek.Saturday|DaysOfTheWeek.Sunday;varweekends=allDays.Where(d=>d.DayOfWeek.HasFlag(w

c# - 没有行开始和结束终止符的 Regex.Replace 有一些非常奇怪的效果......这里发生了什么?

在回答这个问题时C#RegexReplaceand*有人提出问题存在的原因。播放时我产生了以下代码:strings=Regex.Replace(".A.","\w*","B");Console.Write(s);这有输出:B.BB.B我知道0长度字符串在.字符前后匹配,但为什么A被2Bs替换。我可以将B.BBB.B理解为替换A或B.B.B任一侧的零长度字符串但实际结果让我感到困惑-任何帮助表示赞赏。或者正如AakashM所说:为什么Regex.Matches("A","\w*").Count等于2,而不是1或3? 最佳答案 \w后面

c# - 休眠 + QueryOver : filter with Where ignoring sensitive

我正在尝试使用QueryOver在nHibernate中构建一个简单的查询,但我希望它将所有内容转换为小写或忽略敏感信息:Domain.UserUser=Session.QueryOver().Where(x=>x.Login=="username").SingleOrDefault();我怎样才能做到这一点?更新:有人建议问题可能出在数据库的集合上,但我从来没有遇到过任何问题,这个脚本有效:Domain.UserUser=Session.CreateCriteria().Add(Expression.Eq("Login","username")).UniqueResult();

c# - 简易喷油器 : Factory classes that need to create classes with dependencies

我有一个工厂类,它创建了几个不同类型的类。工厂在容器中注册。鉴于它们也具有依赖性,在工厂内部创建类的推荐方法是什么。我显然想避免对容器的依赖,但如果我新建这些类,那么它们将不会使用容器。例如publicclassMyFactory{publicIMyWorkerCreateInstance(WorkerTypeworkerType){if(workerType==WorkerType.A)returnnewWorkerA(dependency1,dependency2);returnnewWorkerB(dependency1);}}所以问题是我从哪里获得这些依赖项。一种选择是使它们成

c# - Dispatcher.Invoke with anonymous delegate 在 Silverlight 中有效但在 WPF 中无效

在Silverlight4中,我有一个自定义服务类,它有一个异步的Completed事件。在Completed事件中,我获取返回的数据并通过如下方式调用填充方法:privatevoidservice_Completed(objectsender,CompletedEventArgsargs){Dispatcher.BeginInvoke(()=>populateInbox(args.Jobs));}privatevoidpopulateInbox(Listjobs){inbox.DataContext=jobs;}BeginInvoke在SL4中工作,但是当我将它移植到WPF时,出现以

c# - "Compile with/main to specify the type that contains the entry point."

根据下面的代码,我收到以下消息。我相当确定我得到它的“原因”,我只是不知道如何重新排列代码以移动/删除/替换导致错误的语句之一。“使用/main编译以指定包含入口点的类型。”"staticvoidMain(string[]args)"下有一堆代码,我从http://support.microsoft.com/kb/816112为了从自动递增中获取ID,所以当其余代码填充Access数据库时,我可以让它自动递增。任何帮助表示赞赏。也欢迎使用更简单的代码获得结果的建议!namespaceWindowsFormsApplication1{publicpartialclassForm1:For