2007年8月,xx項目進行三個月後,北京同事撤回總部,自己被調到北京開發c/s模塊的一些功能.
包括 維護建議,手工派單(9月份將要開發wpf的拓補監控) ,在此處,記錄下c/s下的某些知識和自己碰到的問題和解決方法.
1:空屬類型
xx系統,用到了領域模型等概念.在其中某個對象模型的設計中,設計人員用到了 一個 很怪異的東西,如下代碼:
/// <summary>
/// 告警產生時間,對應消息字段event_time
/// </summary>
[PropertyAlias("event_time")] //這個地方也是個知識點,還沒看懂,以後在記錄
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);