读取属性(Property)中的特性(Attribute)

    //TestParamAttribute 是数据约束特性
    //DBType、DBLenght 是具体的约束
    [AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
    public class TestParamAttribute : Attribute
    {
        private string dBType;

        public string DBType
        {
            get { return dBType; }
            set { dBType = value; }
        }
        private int dBLenght;

        public int DBLenght
        {
            get { return dBLenght; }
            set { dBLenght = value; }
        }
    }

    //为类中的属性定义约束特性
    class Tester
    {
        private int iD;
      
        [TestParam(DBType=”varchar”,DBLenght=4)]
        public int ID
        {
            get { return iD; }
            set { iD = value; }
        }
        private string testName;
       
        [TestParam(DBType=”varchar”,DBLenght=50)]
        public string TestName
        {
            get { return testName; }
            set { testName = value; }
        }
    }

     Tester test = new Tester();
      test.ID = 1;
      test.TestName = “未完待续”;

       //读取对象的 属性、属性的特性、特性的具体约束

       Type t = test.GetType();

        PropertyInfo[] ps = t.GetProperties(); //类的属性列表,对应sql语句的参数(没有指明具体的对象)

        foreach (PropertyInfo p in ps)  //遍历属性列表,可以得到每一个属性
        {
             // label1.Text += “@” + p.Name + “=” + p.GetValue(test, null).ToString() + “,”;//获取指明的对象‘test’的各个属性和值
             //p.GetCustomAttributes(false) 获得每个属性的特性(Attribute)列表
             //遍历特性列表,可以得到每个特性对象
             foreach (object o in p.GetCustomAttributes(false))
             {
                  if (o.GetType().Equals(typeof(TestParamAttribute))) //校验特性是否符合预设特性类型
                  {
                        TestParamAttribute tpa = (TestParamAttribute)o; //将对象强制转化为特性类型
                         //获取指明的对象‘test’的各个属性的特性中各个具体约束的值
                         label1.Text += “@” + p.Name + “(” + tpa.DBType + “,” + tpa.DBLenght + “)” + “=” + p.GetValue(test,null).ToString() + “,”;//p.GetValue(test, null) 函数指定需要获取的对象
                   }
               }
          }

Delphi C#改变TListView控件Items的高度

TListView控件Items的高度 设置比较麻烦,但是可以通过添加一个ImageList来改变实现

C#中
//   设置行高   20  
ImageList   imgList   =   new   ImageList(); 
imgList.ImageSize   =   new   Size(1,   20);//分别是宽和高

listView1.SmallImageList   =   imgList;   //这里设置listView的SmallImageList ,用imgList将其撑大

Delphi中

var
  imgList : TImageList;
begin
//使items的高变高
imgList := TImageList.Create(nil);
imgList.Height := 24; //高
listView1.SmallImages := imgList;

end

国内的基础设置建设

国内电信宽带等目前的情况是,是多个大局域网组成,电信,联通,铁通,等各自铺设各自的设施,既浪费资源,连通性又差。DNS劫持严重,监管和控制非常难。

我就想不通为什么国内的基础设施不是统一控制的,基础设置建设,可以有国家主导,招标个各个工程公司来建设。业务上由不同公司运营,建设和运营分离。

这样电信服务可以集中建设,管理,控制,维护,整个国家宽带是一样的。解决了垄断,连通性等问题。

甚至我觉得公路,铁路,水电等也可以用这种方式建设运营。

保证了这些基础设置的完全公有,又属于市场经济,快速普及,普及各个阶层的人民。解决当前我国宽带,公路,铁路,水电等的基础设置覆盖建设问题。(虽然国家多年前就实施村村通电,但是也有相当部分地区的相当部分群众由于贫穷而无法惠及,就算电线网线就在家门口,叫不出初装费,一样用不上。)

 

既保证所有基础设置国有,的社会主义性质,形成市场经济。绝对的监管政策。
你不行?乱收费? 恶性竞争?吊销你的经营资格,在招标一个来运营,

这段日子的生活

7.20起床,开电车20分钟
8点上班
12点下班开电车20分钟回家煮碗面吃饱1点开电车20分钟
1.30上班
17.30下班

如果我老婆上行政班,开车30分钟去接她,然后去买菜,然后回家煮饭炒菜吃饱
20.30 休息下,然后洗澡
21.30这样。和老婆抢电脑玩下,该睡觉了。

如果是她上夜班,我下班去买菜,回到家里
18.30 炒菜吃饭完了
20.00,然后休息到
21.00点开车30分钟去接老婆,她21.30下班。
22.30回到家里,洗澡
11.00-11.30这样,然后玩下电脑,该睡觉了。

第二天,
7.20起床,开电车20分钟
8点上班 …

平淡,开心 …