none
C#方法参数 RRS feed

  • 问题

  • 请看如下是一C#方法的一个定义:
    [ SqlCommandMethod(CommandType.StoredProcedure) ]
    public void AddCustomer( [NonCommandParameter] SqlConnection connection,
                       [SqlParameter(50)] string customerName,
                       [SqlParameter(20)] string country,
                       [SqlParameter(20)] string province,
                       [SqlParameter(20)] string city,
                       [SqlParameter(60)] string address,
                       [SqlParameter(16)] string telephone,
                       out int customerId )
    {
    ....................
    }
    我想问一下 [SqlParameter(16)] 是什么意思?这是一种什么样的方法定义形式。另外还有一个问题,如下是C#中一方法定义[AttributeUsage(AttributeTargets.Method)]
       public sealed class SqlCommandMethodAttribute : Attribute
       {
          private string commandText;
          private CommandType commandType;
          public SqlCommandMethodAttribute( CommandType commandType, string commandText)
          {
             commandType=commandType;
             commandText=commandText;
          }
          public SqlCommandMethodAttribute(CommandType commandType) : this(commandType, null){}
          public string CommandText
          {
             get
             {
                return commandText==null ? string.Empty : commandText;
             }
             set
             {
                commandText=value;
             }
          }
          public CommandType CommandType
          {
             get
             {
                 return commandType;
             }
             set
             {
                commandType=value;
             }
          }
    其中this(commandType, null){}是什么用法。谢谢

    VC# ASP.NET
    2009年11月19日 14:12

答案

  • 第一个 我觉得类似linq服务方式 可能是sqlserver .net扩展存储过程 近期才出现这个新方式 linq服务 wcf服务 都是这个方式
    第二个问题 语言表达不清楚 最好自己去做个最简单实验 自然明白了

    • 已标记为答案 高居臣 2009年11月20日 11:14
    2009年11月20日 7:36

全部回复

  • 这是linq服务一种模式  存储过程
    第一个问题是 [SqlParameter(16)] 应该是参数字段大小
    第二个问题是this(commandType, null){} 调用了重载有两个参数的方法 比如说 调用一个参数重载方法 它的意思是当前方法的第一个参数为重载方法两个参数中第一个参数赋值 第二个参数为null 默认值 然后执行重载方法 也就是说你可以选择赋值几个参数方法 其他未赋值调用this方法赋值默认值 只有一个方法逻辑  其他方法为程序员选择赋值参数
    2009年11月19日 15:10
  • 你好!
         public SqlCommandMethodAttribute(CommandType commandType) : this(commandType, null){}

         这行代码的意思就是在调用
    SqlCommandMethodAttribute(CommandType commandType)这个构造函数之前,需要先调用SqlCommandMethodAttribute( CommandType commandType, string commandText)这个构造函数!
    周雪峰
    2009年11月19日 16:00
    版主
  • 你好。谢谢你的解答。关于第一个问题,这种格式C#方法定义的要求吗?有这方面的详细介绍吗?谢谢!
    关于第二个问题,我没能看太明白,能进一步解释一下吗?谢谢!


    VC# ASP.NET
    2009年11月20日 5:07
  • 第一个 我觉得类似linq服务方式 可能是sqlserver .net扩展存储过程 近期才出现这个新方式 linq服务 wcf服务 都是这个方式
    第二个问题 语言表达不清楚 最好自己去做个最简单实验 自然明白了

    • 已标记为答案 高居臣 2009年11月20日 11:14
    2009年11月20日 7:36