Tag: .net 4.0

不同FW的协方差导致代码中断?

我在NDC 2010上看到了Jon Skeet的演讲 他提到了一些有趣的事 public Class Base { public void Foo(IEnumerable strings){} } public Class Child:Base { publc void Foo(IEnumerable objects) {} } Main : List lst = new List(); lst.Add(“aaa”); Child c = new Child(); c.Foo(lst); 使用C#3,它将调用: Base.Foo 使用C#4,它将调用: Child.Foo 我知道这是因为协方差 题 : 是不是有点代码破坏变化? 有没有解决方法,所以这段代码将继续像第3版那样工作?

目标框架更改4.0到3.5打破EF模型。 错误111:参照约束错误

我在一个面向.NET framework 4.0的库项目中创建了一个EF模型。 我只是将它降级为目标框架3.5,因为其中一个将使用此库的项目目标是3.5,目前无法升级。 将目标框架从4更改为3.5后,我得到多个111错误,类似于: 错误111:从属角色WfInstance引用的属性必须是关系xx.Entity.FK_WfInstance_WfStatusType的引用约束中的从属角色引用的EntityType xx.Entity.WfInstance的键的子集。 我得到的消息是我的表(WfInstance)主键必须使用/包含引用表(WfStatusType)的Id和它引用的任何其他表。 但是,我不知道该怎么做。 任何帮助,将不胜感激。 TIA – GP

使用iTextSharp在底部的PDF页脚

我正在尝试使用iTextSharp 5.0.6在c#中创建一个pdf文档。 我想分别为OnStartPage和OnEndPage事件中的每个页面添加页眉和页脚。 在页脚的情况下,存在页面结束时创建页脚的问题,而我希望位于页面底部。 iTextSharp中是否有一种方法可以指定页面高度,以便始终在底部创建页脚。 谢谢!

System.Drawing – 参数无效

经过一些更多的测试后,我发现这个问题可能是由于图像以某种方式没有被及时加载以克隆到位图并显示。 这是可能的还是没有? 注意:是的,标题中存在此错误还有其他问题,但从一些研究来看,它似乎是一个含糊不清的错误,有许多可能的原因。 我没有发现与我相同的情况有任何问题。 我收到以下错误。 System.ArgumentException was unhandled HResult=-2147024809 Message=Parameter is not valid. Source=System.Drawing 它起源于这段代码。 似乎是随机的(即,有时候它会起作用,有时却不起作用。连续运行的次数越多,没有重新启动VS并重建项目,失败的可能性就越大): private Bitmap GetSprite(bool anim, int tsIndex, int tileIdx) { System.Drawing.Rectangle cloneRect; string prefix = (anim) ? “A” : “S”; using (Bitmap b = new Bitmap(prefix + tsIndex.ToString() + “.png”)) { if (anim) { cloneRect = new System.Drawing.Rectangle(BaseObjects.A_AnimSpriteSets[tsIndex].StaticRecs[tileIdx].X, BaseObjects.A_AnimSpriteSets[tsIndex].StaticRecs[tileIdx].Y, BaseObjects.A_AnimSpriteSets[tsIndex].RecWidth, […]

静态方法线程是否安全

如果我有一个静态方法将一个对象转换为另一个对象,这个方法在C#中是否安全? public static AnotherDataClass Convert(MyDataClass target) { AnotherDataClass val = new AnotherDataClass(); // read infomration from target // put information into val; return val; } 只是想让问题更清楚…… 当调用convert方法….我们可以假设目标不会被修改。 因为Convert方法只对目标的“attrubite”感兴趣

你应该引用一个类中的Property或Member Variable吗?

可能重复: 您是否应该通过Property访问同一类中的变量? 我最近碰到了这个,并且好奇是否有某种标准,你应该在课堂上引用哪一个。 我的意思是,你是否应该直接访问成员变量或通过属性(除非你需要躲避一些自定义的setter代码),这应该没有区别,但我想确保没有最佳实践。 partial class MyClass { private string foo; internal string Foo { get { return foo; } private set { foo=value; // I do other stuff } } public void DoSomething() { //Option 1; Foo=”some string”; //Option 2; foo=”some string”; } }

定时器回调关闭WPF应用程序(DispatcherTimer工作..)

我有一个带有显示当前时间的文本块的WPF应用程序。 所述文本块绑定到ViewModel上的DependencyProperty。 当然我需要不断更新时间,所以我使用了一个定时器(System.Threading.Timer),如下所示: public MainViewModel() { _dateTimer = new Timer(_dateTimer_Tick, null, 0, 60000); } void _dateTimer_Tick(object sender) { Time = DateTime.Now.ToString(“HH:mm”); Date = DateTime.Now.ToString(“D”); } 问题是,当调用回调时,应用程序退出… bummer(输出说:“在WindowsBase.dll中发生类型’System.InvalidOperationException’的第一次机会exception”就在它即将写入Time DP时) 。 如果我使用DispatcherTimer一切正常。 我不介意使用DispatcherTimer,它只是应用程序非常大,我想尽可能地调整其性能。 据我所知,我没有访问UI线程(我只是更新属性),因此不需要DispatcherTimer。 我错过了什么吗? 谢谢。 编辑:属性定义如下: public string Time { get { return (string)GetValue(TimeProperty); } set { SetValue(TimeProperty, value); } } // Using a DependencyProperty as […]

在可能未初始化的Dictionary元素上执行加号等于操作的简洁方法

我正在寻找一种扩展方法或任何其他建议,可以帮助我使这段代码尽可能简洁。 foreach( Layer lyr in this.ProgramLayers ) foreach( UWBCEvent evt in this.BcEvents.IncludedEvents ) EventGroupLayerLosses[new EventGroupIDLayerTuple(evt.EventGroupID, lyr)] += GetEL(evt.AsIfs, lyr.LimitInMillions, lyr.AttachmentInMillions); 上面的代码有一个相当明确的目的,我用一个复合键将值分组。 但是,此代码将失败,因为字典最初为空,而+ =运算符将不知道在0处启动存储桶。 我能想到的最好的是: public V AddOrSet(this Dictionary dict, K key, V value) { if( dict.ContainsKey(key) ) dict[key] += value; else dict[key] = value; } 但是,当然,即使这样也无法编译,因为没有办法限制V的类型,使得运算符+=存在。 规则 只有一次迭代通过double for循环。 在使用0值初始化字典之前,不允许循环一次。 可以使用辅助方法或扩展方法,但我希望内循环是一个衬里。 尽可能通用和可重用,这样我就不需要为不同类型(小数,整数等)的类似存储创建一堆相同的函数。 作为参考 – 在类的其他地方,键被定义为一个实际的元组(只有命名参数),这就是为什么它可以用作字典键: […]

我应该将任务包装在另一个任务中,还是应该只返回创建的任务?

我正在构建一个使用ADO.NET的.NET 4.0应用程序,所以我不能使用async / await。 我不想要一个解决方案,但我想知道以下哪些实现最好,为什么。 我的unit testing通过所有三个实现,但我想知道这三个之间的区别。 #1嵌套任务 在我的第一个实现中,我将任务包装在另一个任务中。 我认为搞两个任务对性能不利,但我不确定。 public virtual Task ExecuteReaderAsync(IDbCommand dbCommand, CancellationToken cancellationToken) { return Task.Factory.StartNew(() => { var sqlCommand = CheckIfSqlCommand(dbCommand); PrepareExecuteReader(dbCommand); return Task .Factory .FromAsync(sqlCommand.BeginExecuteReader, sqlCommand.EndExecuteReader, null) .Result; }, cancellationToken); } #2使用TaskCompletionSource 然后我尝试将结果包装在TaskCompletionSource所以我只有一个任务。 public virtual Task ExecuteReaderAsync(IDbCommand dbCommand, CancellationToken cancellationToken) { var taskCompletionSource = new TaskCompletionSource(); var sqlCommand = […]

从WCF客户端连接到服务器的问题 – HTTPS端点 – 适用于本地开发但不适用于服务器

更新日志: 添加了更多详细信息 – 包括WCF跟踪。 首先,不是很多WCF经验,所以如果这是一个明显的错误,请道歉。 我正在编写一个简单的控制台应用程序,需要连接到第三方SOAP Web服务。 供应商提供的WSDL在这里: http://pastebin.com/LJurv0qA 我已经使用它在Visual Studio 2010(使用.NET 4.0)中创建服务引用来创建后面自动生成的代码。 我还为各种配置设置了app.config: <!—-> <!—-> 现在在我的LocalDevelopment框(即我的笔记本电脑)上,客户端工作正常,我可以使用他们的Logon()操作连接到第三方服务。 当我将我的代码部署到我们的测试服务器时,相同的代码和配置,n会引发以下exception: 日志文件已开始:18/11/2015 20:11:25在机器TESTSERVER上================================= =========================================== 18/11/2015 20: 11 >>>> ***已记录的应用程序:登录日期:18/11/2015 20:11:25消息:客户端问题(Client.Logon()) – 通信问题 – 消息:发出HTTP请求时发生错误to test.jsp。 这可能是由于在HTTPS情况下使用HTTP.SYS未正确配置服务器证书。 这也可能是由客户端和服务器之间的安全绑定不匹配引起的。 堆栈跟踪: 服务器堆栈跟踪:在System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException,HttpWebRequest request,HttpAbortReason abortReason) System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)at System.ServiceModel.Channels.RequestChannel.Request(Message message,TimeSpan timeout)at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message,TimeSpan) System.ServiceModel.Channels.ServiceChannel.Call(String action,Boolean oneway,ProxyOperationRuntime operation,Object [] ins,Object [] outs,TimeSpan timeout)System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage […]