Tag: .net

控制台应用程序在鼠标单击时冻结

我有一个非常简单的C#控制台应用程序,它显示一些文本和循环等待输入,直到按下转义键或提供超时时间。 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading; namespace SampleApp { public static class Program { public static void Main (string [] args) { var key = new ConsoleKeyInfo(); var watch = Stopwatch.StartNew(); var timeout = TimeSpan.FromSeconds(5); Console.WriteLine(“Press escape to return to the previous screen…”); Console.WriteLine(); do { Console.WriteLine(“This screen […]

为什么System.Drawing Rectangle,Point,Size等可变结构而不是类?

微软是否有理由决定制作这些结构? 这三个都是可变的。 如果它们是不可变的,或者它们是引用类型,我会发现它们更容易处理。 如果有理由它们必须是结构,为什么它们是可变的?

如何使用razor引擎进行图像src的电子邮件模板化

我已经找到了关于如何在asp.net中使用Razor Engine用于电子邮件模板的链接 ,并且它运行良好。 但我试图在电子邮件模板中添加带有图像的徽标。 像这样的东西: EmailTemplate.cshtml (顺便说一下,这是一个强类型视图) 当我尝试在电子邮件中提交它时,似乎没有读取图像路径,它只在内容中呈现X. 我正在考虑将图像路径作为模型的一部分传递,但它似乎很奇怪。 有没有办法实现这个目标? 任何帮助将非常感激。 谢谢

Convert.ToDecimal(string)和Decimal.Parse(string)之间的区别

Convert.ToDecimal(string)和Decimal.Parse(string)之间的C#有什么区别? 在什么情况下你会使用一个而不是另一个? 它对性能有何影响? 在两者之间进行选择时,我应该考虑哪些其他因素?

使用Validator时忽略.NET 4 RTM MetadataType属性

我正在使用VS 2010 RTM并尝试使用MetadataTypeAttribute对简单类型执行一些基本validation。 当我将validation属性放在主类上时,一切正常。 但是,当我把它放在元数据类上时,它似乎被忽略了。 我一定是错过了一些微不足道的东西,但我现在已经坚持了一段时间。 我查看了Enterprise Libraryvalidation块作为一种解决方法,但它不支持开箱即用的单个属性validation。 有任何想法吗? class Program { static void Main(string[] args) { Stuff t = new Stuff(); try { Validator.ValidateProperty(tX, new ValidationContext(t, null, null) { MemberName = “X” }); Console.WriteLine(“Failed!”); } catch (ValidationException) { Console.WriteLine(“Succeeded!”); } } } [MetadataType(typeof(StuffMetadata))] public class Stuff { //[Required] //works here public string X { […]

.NET DateTime,与OADate进行转换时的分辨率是否不同?

我正在将DateTime转换为OADate。 我希望在将OADa​​te转换回时获得完全相同的DateTime,但现在它只有毫秒级的分辨率,因此不同。 var a = DateTime.UtcNow; double oadate = a.ToOADate(); var b = DateTime.FromOADate(oadate); int compare = DateTime.Compare(a, b); //Compare is not 0; the date times are not the same 来自a:634202170964319073 来自b的筹码:634202170964310000 OADate双倍:40437.290467951389 这是什么原因? DateTime的分辨率显然足够好。

多播委托C#中的奇怪行为?

我有这个简单的事件: public class ClassA { public event Func Ev; public int Do(string l) { return Ev(l); } } 和2方法: static int Display(string k) { return k.Length; } static int Display_2(string k) { return k.Length*10; } 我正在注册这个活动: ClassA a = new ClassA(); a.Ev += Display; a.Ev += Display_2; 现在,我正在执行: Console.WriteLine(a.Do(“aaa”)); 输出 : 什么 ??? 他在调用列表中有2种方法! 它确实运行了它们,但为什么它只显示上次注册的结果? […]

我应该如何建模我的代码以在这种特定情况下最大化代码重用?

更新:请参阅问题的结尾,了解我如何实施解决方案。 对于措辞不好的问题,我很抱歉,但我不确定如何最好地提出这个问题。 我不确定如何设计一个可以重复使用的解决方案,其中大多数代码在每次实现时都完全相同,但实现的一部分每次都会改变,但遵循类似的模式。 我试图避免复制和粘贴代码。 我们有一个内部数据消息系统,用于在不同机器上跨数据库更新表。 我们正在扩展我们的消息服务以向外部供应商发送数据,我想编写一个简单的解决方案,如果我们决定向多个供应商发送数据,可以重复使用。 代码将被编译为EXE并定期运行以将消息发送到供应商的数据服务。 以下是代码的大致概述: public class OutboxManager { private List _OutboxMsgs; public void DistributeOutboxMessages() { try { RetrieveMessages(); SendMessagesToVendor(); MarkMessagesAsProcessed(); } catch Exception ex { LogErrorMessageInDb(ex); } } private void RetrieveMessages() { //retrieve messages from the database; poplate _OutboxMsgs. //This code stays the same in each implementation. } private void SendMessagesToVendor() […]

取消令牌的任务?

鉴于取消令牌,我想创建一个等待它的任务,这是永远不会完成但可以取消。 我需要这样的模式,IMO应该很常见: async Task DoStuff(Task t, CancellationToken ct) { // t was made from TaskCompletionSource, // both t and ct are beyond my control Task t2 = TaskFromCancellationToken(ct); await Task.WhenAny(t, t2); // do stuff } 我到目前为止最好的想法是: Task TaskFromCancelationToken(CancellationToken ct) { return Task.Delay(Timeout.Infinite, ct); } 是否有更好的方法来实现这种逻辑?

为什么十进制不是原始类型?

为什么decimal不是原始类型? Console.WriteLine(typeof(decimal).IsPrimitive); 输出false 。 它是一种基本类型,它是语言规范的一部分,但不是原语。 什么原始类型在框架中表示decimal ? 例如, int具有int类型的字段m_value 。 double有一个m_value类型的字段m_value 。 decimal不是这种情况。 它似乎由一堆int表示,但我不确定。 为什么它看起来像一个原始类型, 表现得像一个原始类型 (除了在几种情况下 )但不是一个原始类型?