2007年8月,xx项目进行三个月后,北京同事撤回总部,自己被调到北京开发c/s模块的一些功能.

包括 维护建议,手工派单(9月份将要开发wpf的拓补监控) ,在此处,记录下c/s下的某些知识和自己碰到的问题和解决方法.

1:空属类型

xx系统,用到了领域模型等概念.在其中某个对象模型的设计中,设计人员用到了 一个 很怪异的东西,如下代码:

 /// <summary>
        /// 告警产生时间,对应消息字段event_time
        /// </summary>
        [PropertyAlias("event_time")] //这个地方也是个知识点,还没看懂,以后在记录,文章见 http://www.cnblogs.com/yanchanggang/archive/2008/01/04/1025565.html
        public DateTime? RaiseTime                                            //请注意这个地方的问号
        {
            get
            {
                RaiseAlarmContext context = mAlarm.RaiseAlarmContext;
                if (context != null)
                    return context.OccurTime;
                else
                    return null;
            }
        }

这个地方的问号,很怪异,问了下同事,才知道这个叫 空属类型.

那什么是空属类型呢?

举个例子:

在c#中,定义一个 值类型 DateTime tempTime;

值类型,如果没有初始化值,系统都会有个默认值,如果在程序中没有对这个值类型赋值而要存入数据库,相信数据库中的结果并不是我们希望的空,而是一个具体的值.

空属类型,解决了这个值类型可以为空的问题.

引用别人的解释:(地址:http://dotnet.chinaitlab.com/CSharp/722415.html)

空属类型简介

 空属类型允许一个值类型具有“空值”意义,从而方便很多场合的运算,如数据库中的空字段。

空值类型演示:

int i = 123;
int? x = i;
double? y = x;
int? z = (int?)y;

空属类型的几个注意点

 空属类型实际上是一个泛型类型
 System.Nullable。空属类型的基础类型就是System.Nullable的类型参数,其中T必须为值类型。

 空属类型如果值不为空,可以运用同样的基础类型所具有的运算,如:+、 -、 *、 /

 空属类型的HasValue属性用来判断类型是否为空,如果不为空,则可以通过Value属性来获取它的基础类型的值。

2:使用反射获取对象的属性的属性名

方法一:

 private PropertyInfo[] Showproperty(object a)
        {
            Type TpA = a.GetType();
            PropertyInfo[] propertyInfo = TpA.GetProperties();
            return propertyInfo;
        }


方法二:

             Attribute[] propertyAttributes = new Attribute[] { DesignOnlyAttribute.No };
            PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(a, propertyAttributes);

posted on 2007-12-14 16:46  颜昌钢  阅读(274)  评论(0编辑  收藏  举报