02 2011 档案

C#中类型分析中的常见问题 Type
摘要:写代码的时候经常需要分析已有类型的信息例如:分析现有类型自动生成类, 或者为现有的类自动增加一些功能总结了一点点经验以ClassA a; 为例1. 通过typeof(ClassA) 或者 a.GetType() 获取类型信息, 推荐使用typef() 可以避免空引用,而且有的时候不需要构造一个ClassA的实例,  typeof(ClassA)的性能一点都不差,不要把它和反射混为一谈,2.对于Type.IsPrimitive来说 很多常见的类型不是原生类型  例如 String DateTime decimal 都不是原生类型  按照MSDN的说明 原生类型只包括:http://msdn.mi 阅读全文

posted @ 2011-02-17 18:58 听说读写 阅读(1328) 评论(0) 推荐(0) 编辑

C#动态生成代码和程序集
摘要:以下代码动态生成cs文件编译为Assembly 之后可以使用AppDomain.Load 加载程序集,并新建类型[代码] 阅读全文

posted @ 2011-02-17 16:33 听说读写 阅读(7542) 评论(0) 推荐(1) 编辑

某项目要调用现有的100多个DLL 五 自动封装跨域调用的逻辑
摘要:上文说到了可以通过继承的方式实现Class的可序列化那么目前准备采用的方案如下1.为所有输入输出参数 实现可序列化 (原来已经序列化的就不必了)2.在本域生成一个代理类, 负责封装所有输入参数 并调用远程域的方法3.在独立域生成一个代理类,负责接收输入参数 调用实际的方法,并且包装返回值调用流程 本身代码 -> 本地代理类 -> 封装输入参数 - > 跨域访问 -> 接收输入参数 并调用实际的DLL -> 封装返回值 -> 本地代理类接收返回参数一共要动态生成3个Assembly一个保存 本域的代理类程序集一个保存 独立域的代理类程序集还有一个保存所有的实体 阅读全文

posted @ 2011-02-17 15:40 听说读写 阅读(402) 评论(0) 推荐(0) 编辑

面试题 拿钻石
摘要:已知一个有10层楼, 每层都有一个钻石1.你在一个电梯里面,电梯向上,每层只停一次 然后就到上一层2.一共只能拿一次钻石, (不允许交换!), 当然每层你都可以观察钻石问如何让 "拿到最大钻石" 的概率最大化假设 最大的钻石叫D10 最小的叫D11. 假设只观察第一层 后面的楼层中 只要有比第一层大的就拿走 2. 假设只观察前两层 记录下最大的钻石,后面的楼层中 只要有比前两层最大的钻石还要大的钻石就拿走 ,那么最高的概率是多少呢? 阅读全文

posted @ 2011-02-16 22:07 听说读写 阅读(1269) 评论(2) 推荐(1) 编辑

某项目要调用现有的100多个DLL 四 把不能序列化的实体类变成可以序列化的
摘要:由于跨域访问 要求所有的输入输出参数 要么是继承MarshalByRefObject, 要么标记为可序列化由于这些dll又是其他人开发的 我们没法修改它们继承与 MarshalByRefObject , 而且很多类型已经有了继承了...那么只好在把类型变成可序列化上做功夫了以前有写过一篇文件如何想办法把不可序列化的类 变为可序列化的不可序列化的类 声明如下:[代码]话说这个类写的真是够烂的..... - -#只要实现一个它的子类 并实现ISerializable 接口 就可以在需要传递InputParameter的地方用它的子类代替它代码如下:[代码]C#里面 接口不能定义构造函数....真是 阅读全文

posted @ 2011-02-15 18:04 听说读写 阅读(540) 评论(0) 推荐(0) 编辑

private 和 protected 构造函数的选择
摘要:实现单例模式的时候经常要把构造函数标记为private 和protected以防止外部直接通过new操作符 构造一个新的实例众所周知 private 和protected的主要区别就是 后者允许子类调用被标记为protected的方法另外一个常识: 使用new操作符构造一个子类的过程中 .net会先构造一个父类出来 ,如此递归 直到object对象那么也就是说 标记为protected的时候 实际上还是可以通过继承的方式间接的构造父类对象代码如下: (new ClassB的同时也间接的new ClassA了)[代码]private则没有这个问题, 但是! 标记为private以后实际上也就意味 阅读全文

posted @ 2011-02-14 13:11 听说读写 阅读(3816) 评论(1) 推荐(0) 编辑

某项目要调用现有的100多个DLL 三 先解决为一个类型做一个跨域的问题
摘要:将同类的操作Wrap在同一个类型中,如以下代码: [代码]这是一个简单的wrap 用于调用另外一个dll的OPATest 类 , 同时测试一下代码是否运行在独立的域中构造函数变为Protected的主要原因是禁止直接通过构造函数新建wrap实例,强迫通过DefaultInstance的方式调用代码 (这样才是应用程序隔离的)不变成Private的原因是之后还需要有继承 如果把父类的构造函数设置为private 那么子类也构造不了但是在当前代码中 你应该把protected改为public 才可以正常的运行, 为了解决跨域的问题 将wrap类继承于 MarshalByRefObject ,Opa 阅读全文

posted @ 2011-02-14 11:40 听说读写 阅读(522) 评论(0) 推荐(0) 编辑

面试题:红绿灯
摘要:已知一个十字路口,1.每次切换红绿灯的时间间隔总是M2.相对的红绿灯总是同样的状态3.相邻的红绿灯总是不同的状态( 即状态要么是 0101 要么是1010 不可能出现其他状态,如1100)4.一个人通过一个人行横道的时间是N (N<M)5.请问一个人任意时间到达路口,到达对角所需的平均时间6.按照国外的情况 只要你上人行道的时候还是绿灯, 那么你就可以一直走过去 (即使下一秒变成了红灯)大意就是碰运气啦 一个人要走到对角 平均需要多久 阅读全文

posted @ 2011-02-14 11:06 听说读写 阅读(924) 评论(2) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示