反射,LINQ,线程池,WCF,自动更新
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
通过反射机制控制前台的数据项的显示和隐藏 有个需求,笔者比较挠头,要求如果前台有数据项的话 这一行就显示,没有的话,就隐藏。
如果要是一个一个判断,并通过Panel的Visible属性设置的话,就得写25次,难道没有别的办法了吗?当然有,就用反射机制就可以。
Code
protected void Page_PreRender(object sender, EventArgs e)
{
PropertyInfo[] pi = this.Page.GetType().GetProperties();
foreach (PropertyInfo prop in pi)
{
if (prop != null && prop.PropertyType == typeof(string))
{
string val = (string)prop.GetValue(this, null);
if (string.IsNullOrEmpty(val))
{
string pnName = "pn_" + prop.Name;
if (Page.FindControl(pnName) != null)
{
Page.FindControl(pnName).Visible = false;
}
}
}
}
}
需要注意的是:
第一,应当放在PreRender事件中;
第二,必须有一个判断,就是必须属性器是字符串类型;
第三,Panel的ID命名有一个约定,就是“pn_”开头,后面跟属性器的名字。
WCF时如果有DataTable 如果用JAVA来调用的话。。可以采用下面的方式
JAVA处理含有DataSet的web services:http://www.javaeye.com/topic/39025
使用LINQ查询非泛型类型
var cc1 = from car in carList.Cast<Cars>()
2 where car.CarMake == "BMW"
3 select car;
,除了Cast运算符,我们也可以使用OfType
OfType可以过滤集合中相同类型的元素,如果你的集合中包含了不同类型的元素。这个方法得到指定类型的元素对象。
var cc2 = from car in carList.OfType<Cars>()
2 where car.CarMake == "BMW"
3 select car;
考虑使用下面的这种方式来查询
C#实现软件自动升级
由于程序在运行时不能用新的版本覆盖自己,因此,我们将登录窗口单独做成一个可执行文件,
用户登录时,从网上检测是否有新的主程序,如果有,则从后台下载并覆盖老的版本,用户输入正确的用户名和密码后,
通过参数将必要的信息(如用户名、密码等)传递给主程序,实现登录,我们还是以实际例子来说明。
多线程的还是用线程池来做是比较好的。
ThreadPool.QueueUserItem(委托调用吧);
查看数组中哪些是有相同的值
return stra.Intersect(strb).Intersect(strc);
繁简体转换。。 中文字的分析
http://blog.csdn.net/net_lover/archive/2009/04/20/4095606.aspx