月度归档:2016年09月

MSSQL 如何采用sql语句 获取建表字段说明、字段备注、字段类型、字段长度


下文讲述-采用sql脚本获取指定表中所有列对应的说明信息,
脚本如下所示:

SELECT
(case when a.colorder=1 then d.name else '' end) [数据表名称],
  a.colorder [列顺序],
  a.name [列名称],
   b.name as [列类型],
  b.length as [列长度],
  g.[value] AS [列说明信息]
FROM syscolumns a left join systypes b
on a.xtype=b.xusertype
inner join sysobjects d
on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join sys.extended_properties g
on a.id=g.major_id AND a.colid = g.minor_id 
WHERE d.[name] ='IError'--数据表名称
order by a.id,a.colorder

c# 反射简介


一 、初识反射

反射:
反射主要使程序可以访问、检测、修改自身及其它应用程序的行为状态的一种方法。
反射常用之处;
动态加载DLL
动态创建类的实例
在程序中动态的访问程序集中的方法,使程序达到后期绑定的功能


二 、获取类型信息

 
    #region 自定义类

    public class testClass {
        public string infoName;
        public void testShow() { }
        public int shuXing{get;set;}
    }

    #endregion




    public partial class test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            #region 打印出类的相关信息
            Type tmp = typeof(testClass);
            Response.Write("class name: "+tmp.Name+"
"); //类名 不带命名空间 Response.Write("class full name: " + tmp.FullName + "
"); //包含命名空间的类名 Response.Write("class namespace name: " + tmp.Namespace + "
"); Response.Write("class assembly name: " + tmp.Assembly + "
"); Response.Write("class module name: " + tmp.Module + "
"); Response.Write("class base type name: " + tmp.BaseType + "
"); Response.Write("class is class name: " + tmp.IsClass + "
"); Response.Write("
"); //遍历展示 类中的所有成员信息 MemberInfo[] memberTmpList = tmp.GetMembers(); foreach (var i in memberTmpList) { Response.Write(string.Format("{0}:{1}
",i.MemberType,i)); } #endregion } }


三 、c# 反射调用一个类的方法

  
    #region 自定义类

    public class testClass {
        public string infoName;
        public void testShow() { }
        public int shuXing{get;set;}
        public string showThisTime(string t) { 
          return "反射调用这个方法__参数如下:"+t+" "+System.DateTime.Now.ToString("yyyyMMdd HH:mm:ss");
        }
    }

    #endregion




    public partial class test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            #region 反射 调用方法
            System.Reflection.Assembly tmpAssembly = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory+"bin\\所需反射类的.dll");
            Type tmpType = tmpAssembly.GetType("bossManage.testClass");
            object tmpO = System.Activator.CreateInstance(tmpType);

            System.Reflection.MethodInfo tmpMethod = tmpType.GetMethod("showThisTime");
            var tmpReturn = tmpMethod.Invoke(tmpO, new object[] { "传入参数" });
            Response.Write(tmpReturn);
            #endregion


        }
         
    }

 

委托协议讲述比较详细


1 ios 协议 委托语法简介

IOS协议,同c#、java中的接口具有相同的功能,都是用来定义一个实现这个接口类的行为。
它是对一个对象行为的定义和一个对象功能的规范。
常用的关键字:
@required是必须实现的方法;
@optional是可选实现;

IOS委托:
委托是OC中的一种设计模式,实现这种模式,需要使用协议。
在ios中很多原生态的控件使用这种设计模式,例: UITableView控件。
在ios中委托的功能主要是将需要做的事情委托给其它对象去做。


2 ios 委托的demo实现

例: 两个类之间传值,一个类调用另外一个类中的方法 

 
@protocol userDelegate 
@required
- (void)userCount;
@optional
- (void)userMethod;
 
@end
下文将定义两个类 "user1"  "user2"

 
@interface user1 : NSObject
 
@end
 
@interface user2 : NSObject

@property (assign,nonatomic) id didUserDelegate;
 
@end
 实现其中的getUserCount方法:

@implementation user1
 
- (void)getUserCount{
    NSLog(@"user1中getUserCount的实现");
}
 
@end
 
@implementation user2
 
- (void)getUserCount{
    NSLog(@"user2中getUserCount的实现");
}
 
@end
调用:
user1 *user1=[[user1 alloc]init];
 
user2 *user2=[[user2 alloc]init];
 
[user2 getUserCount];
 
[user1 getUserCount];

user2.didBookDelegate=user1;
[user2.didBookDelegate getUserCount];