最近CM(Configuration Management) 的同事在自定义开发TFS的过程中遇到一个问题。 领导要求快速开发一个工具, 可以自动连接TFS,然后自动Check out一些word文件, 然后程序修改后自动check in。(比如签名)这个实现的话,需要3个方面:1.根据现有TFS界面抽出可以使用的UI, 然后找到对应dll2.利用C#的反射, 获取到对应字段或者属性
尽量使用using语句块和finally (实现IDisposable) 尽量使用单个大程序集而不是多个小程序集 (使用NGen.exe)使用sealed关键字权衡虚函数使用弱引用
c#中有Expression,即表达式。 通过Expression可以动态构造代码,并编译执行。 比如:1. 创建参数表达式 :ParameterExpression numParam = Expression.Parameter(typeof(int), "num");、创建常量表达式:ConstantExpression five
前段时间做了一个worklist的项目,有部分是利用xml配置DICOM的tag,然后根据xml把DICOM的Dataset转为实体类,或者把实体类转为Dataset。 当中主要应用了反射来调用Dataset的put方法, 但是发现性能很慢, 一个解析映射花了几百毫秒。解决办法:利用dynamic来替换反射:dynamic temp = new ExampleClass();temp
最近做项目时,用到了xml的序列化与反序列化, 发现最好用xsd来验证xml, 因为反序列化xml不校验xsd。 方法:xmlData变量为xml字符串MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(xmlData)); ms.Position = 0;
今天用EF遇到一个问题, The specified named connection is either not found in the configuration, not intended to be used。。。。。。。 原因是我的EF中数据库连接字符串放到App.Config文件中, 而我另一个工程使用此工程时没有添加App.Config 或者Web.Conf
今天帮忙同事解决在后台绑定时,动态更改控件(Grid)的Background。 有个陷阱,C#有2个命名空间有Brush和Color, 分别为System.Drawing和System.Window.Media.说到这里大家应该明白了, Grid的Background的类型为Media命名空间里Brush,而我后台设置了Drawing命名空间里的Brush, 而且没报错。导致出现设置
最近在优化WPF性能时, 发现在特定条件下BindingList比ObservableCollection性能更高, 因为它提供Disable/Enable 更改通知的方法。这样我们可以不需要很频繁的通知UI去更新, 而是等所有操作都做完后再通知。 然而, 默认的BindingList不支持Sort, 需要我们实现。 public class SortableBindingList
通过FlagsAttribute可以实现。 // A bit field or flag enumeration of harvesting seasons. [Flags] public enum Seasons { None = 0, Summer = 1, Autumn = 2, Winter = 4, Spring = 8, A
[StructLayout(LayoutKind.Sequential)] public struct POINT { public int X; public int Y; public POINT(int x, int y) {
http://msdn.microsoft.com/zh-cn/vstudio/aa497289(en-us).aspxPerformance This section includes information on logging, tracing, profiling, and other diagnostic techniques for analyzing and monito
1.把对象赋值为null 2.立即调用GC.Collect();注意:这个也只是强制垃圾回收器去回收,但具体什么时候执行不确定。 代码: class Test { ~Test() { Console.WriteLine("DeConstructor."); }
章节:线程与线程处理讨论多线程的优缺点,并概括了可以创建线程或使用线程池线程的几种情形。托管线程中的异常描述不同版本 .NET Framework 的线程中的未经处理的异常的行为,尤其是导致应用程序终止时的行为。为多线程处理同步数据描述将用于多线程的同步类中的数据的策略。托管线程状态描述基本的线程状态,并解释如何检测一个线程是否在运行。前台和后台线程解释了前台和后台线程的区别。Micr
1.利用lock, 如: public class TestThreading { private System.Object lockThis = new System.Object(); public void Process() { lock (lockThis) { // Access thr
wpf中的控件模板里的元素有自己独立的命名域。 因此不能通过FindName来根据x:Name来查找子节点。 自己写了一个方法, 通过可视树遍历子节点,然后匹配名字。 如下: private static ChildItem FindVisualChildItem<ChildItem>(DependencyObject obj) where ChildItem :
关于IDisposable的Dispose方法.Net中GC会自动回收托管资源, 对于非托管资源应该使用Dispose方法。 在使用Dispose方法时,应注意避免在Dispose内部中继续释放托管资源, 即防止Finalize方法被调用( SuppressFinalize)。 结构不支持继承,可以实现接口。 结构不支持析构函数。 析构函数既没有修饰
附件是DataGrid支持滚动条的文件。 具体使用如下: 1)DataGrid使用控件模板 <Setter Property="Template" Value="{DynamicResource grdStudyListDataGridControlTemplate}"> <Con
最近在做PACS的项目中想利用插件来加载各个不同的SCP的操作实现。比如Worklist的查询数据库,可以有多个实现。 比如MPPS的更新,也可以有多个实现。 为了统一弹性处理插件模块,增加了类型输入,用来只加载特定的服务的实现。 [InheritedExport(typeof(ISCPBase))] public interface ISCPBase {
在做RIS的项目中遇到一个问题, 因为Worklist要兼容各个RIS数据库, 因此设计了目前这个架构。 1.xml文件来配置RIS数据库的数据源, 2.xml文件来存储关于查询/更新数据库的SQL语句, 其中参数/值输入可用用{x}来代替。 如{0}代表第一个参数 3.xml来配置Worklist SCU的query的字段和数据库字段的映射, 可以用Tag ID或者Tag
Subject: C#中如何获取其他进程的命令行参数 ( How to get other processes's command line argument )From: jiangong.li_SWTo: dongpo.zhu_SWDate Sent: 12/29/2012 10:42:37 AM private static IEnumer
C#中索引器是个好东西, 可以允许类或者结构的实例像数组一样进行索引。 在foreach或者直接索引时很有用。 使用索引器可以简化客户端代码, 即调用者可以简化语法,直观理解类及其用途。索引器只能根据声明的形参类型及数量进行区别, 形参命名不能作为区分。概述:使用索引器可以用类似于数组的方式为对象建立索引。get 访问器返回值。 set 访
1. 接口为ExecuteStoredProcedure(string storedProcedureName, params ObjectParameter[] parameters) 2. 参数为存储过程名字, 及输入值。 3. 思路:创建连接(连接中指定了是Sql/MySql/ODBC等等); 创建通用DbCommand;更改Text以及Type;添加通用Parameter(
xml schema中有hexBinary类型, 我们在实现C#的Serialization时,一般默认把hexBinary映射为byte[],但是有些情况我们需要把 hexBinary映射为uint、int等等这样的类型。 这样我们就需要包装下, 如下: xml schema中定义ID节点, 类型为hexBinary。我们通过中间byte[] IDBinary转为uint ID,
Entity Framework的性能优化: 1.使用MergeOption.NoTracking (发现添加这个代码后, 导致"The object cannot be deleted because it was not found in the ObjectStateManager."错误,解决办法为, 先调用entity实例的Attach(del
项目中遇到一个问题, 有4张表, 然后相互之间有3张关系表关联, 一共七张表。 想要从顶层表查询最底层表的记录,不能写7层嵌套。 用Linq实现特别简单, 表:User,Role,Module,Function以及User_Role,Role_Module, Module_Function, var fs = (from r in DB.user_role
Collection was modified; enumeration operation may not execute” 这次项目中遇到一个问题, 就是C#程序随机崩溃, 抛出上面的异常。 经过debug后,发现原因是:c#的linq用Where关键字查询列表时,其他线程在操作此列表, 导致Where查询转换为Foreach时抛出异常。解决办法: 应该有个全局
以下的这个类实现了 2个含有部分字段名字相同 的对象的 赋值拷贝。public class ShallowCopyHelper { public static void CopyPropertiesValue(object objFrom,
WPF error: does not contain a static 'Main' method suitable for an entry pointdoes not contain a static 'Main' method suitable for an entry point在Visual Studio中删除App.xaml从别的位
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号