我有个方法,比如叫
public bool Add(?,?)
{
...
}
我想做个接口或者抽象类规范这个方法,以后的类都派生自这个类,然后实现自己的add方法
但是在add的时候每个类的参数都是不一样的,怎么才能再抽象一下add的参数啊不知道我表达的清楚么?

解决方案 »

  1.   

    public bool Add (object ,object)
    {
    }调用的时候将参数重新封装.
    但是你方法体中如何引用呢?
      

  2.   

    1.用泛型,用泛型对象作为参数,
    2.不用泛型,用object进行代替,在重载类中确定object类型。
      

  3.   

    需求就是规范一下add的方法add方法可能会向多个表插入数据,可能是一个,可能是多个,有不确定性
    每个表都当作一个参数对象传入方法里,然后再操作
      

  4.   


     Public Function Test(ByVal Param() As ParamArrayAttribute) As Object
            Return MsgBox(Param.Length.ToString)
        End Function
      

  5.   


     Public Function Test(ByVal Param() As ParamArrayAttribute) As Object
            Return MsgBox(Param.Length.ToString)
        End Function
      

  6.   


    主要是想解决个数的问题,现在是两个参数,但是要是有3个参数的时候,如何override
      

  7.   

    public class Test<T> 
    {
       Test() { } 
       public virtual bool Add<T>(T t1,T t2){ return true; }
    }
      

  8.   

    add(params object[] argValue)
      

  9.   

    刚才明明没有回复成功啊?怎么回事儿呢?
    public interface ITestAdd 

        object Add(ParamArrayAttribute[] Param); 

      

  10.   

    //对象参数数组,什么东西都能放,多少个都可以..
        public bool Add(params object [] o) 
        {
        //... 
        } 
      

  11.   

    1. 不定参数可以这样做,但是对于继承的方法,也只能使用 object数组传递,读起来比较费劲.
     public  virtual string mm(params object[] parms)2. 个人意见是传入一个对象类.子类方法只需要继承对象类ParmClass并重写成需要的格式就可以了.
     public  virtual string mm(ParmClass a)
      

  12.   


    函数(string s1,params object[] args)
    {
       foreach(object obj in args)//对参数数组循环
       {
           if(obj is int){}
           if(obj is string){}
           .........
       }
    }void main()
    {
       函数("string1");
       函数("string1",67,3.14,"hello");
       函数("string1","113",1100);
    }你试试这个看行不行。
      

  13.   

    Method(params object[] argValue) 
      

  14.   

    我的实现方式及代码:
    定义接口:
        public interface IBaseAdd<T>
        {
            bool Add(T t1, T t2);
            bool Add(T t1, T t2, T t3);
            bool Add(params T[] param);
        }
    定义抽象类继承自接口IBaseAdd
        public abstract class absAdd<T> : IBaseAdd<T>
        {        #region IBaseAdd<T> Members        public virtual bool Add(T t1, T t2)
            {
                throw new Exception("The method or operation is not implemented.");
            }        public virtual bool Add(T t1, T t2, T t3)
            {
                throw new Exception("The method or operation is not implemented.");
            }        public virtual bool Add(params T[] param)
            {
                throw new Exception("The method or operation is not implemented.");
            }        #endregion
        }
    然后你的代码去继承抽象基类,override自己想要的方法
        public class TAdd : absAdd<int>
        {
            public override bool Add(int t1, int t2)
            {
                return base.Add(t1, t2);
            }        public override bool Add(int t1, int t2, int t3)
            {
                return base.Add(t1, t2, t3);
            }
        }
    搞定
      

  15.   

    dsfsdfsdfdsf“/”应用程序中的服务器错误。
    --------------------------------------------------------------------------------超时时间已到。在操作完成之前超时时间已过或服务器未响应。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 超时时间已到。在操作完成之前超时时间已过或服务器未响应。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
    [SqlException (0x80131904): 超时时间已到。在操作完成之前超时时间已过或服务器未响应。]
       System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +800131
       System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +186
       System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) +556
       System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj) +164
       System.Data.SqlClient.TdsParserStateObject.ReadPacket(Int32 bytesExpected) +34
       System.Data.SqlClient.TdsParserStateObject.ReadBuffer() +44
       System.Data.SqlClient.TdsParserStateObject.ReadByte() +17
       System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +79
       System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +31
       System.Data.SqlClient.SqlDataReader.get_MetaData() +62
       System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +297
       System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +1005
       System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +132
       System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
       System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReader() +84
       CSDN.Community.TopicDatabase.TopicDataProvider_PointForum.AskExpertTopic(String UserName, Int32 PageSize, Int32 CurrPage, Boolean toUser, Boolean checkout, Int32& count, List`1& TopicSet) +698
       CSDN.Community.PointForum.WebControls.TopicToUserPage.OnLoad(EventArgs e) +712
       System.Web.UI.Control.LoadRecursive() +47
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436 
    --------------------------------------------------------------------------------
    版本信息: Microsoft .NET Framework 版本:2.0.50727.1433; ASP.NET 版本:2.0.50727.1433 asdsadasd“/”应用程序中的服务器错误。
    --------------------------------------------------------------------------------超时时间已到。在操作完成之前超时时间已过或服务器未响应。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 超时时间已到。在操作完成之前超时时间已过或服务器未响应。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
    [SqlException (0x80131904): 超时时间已到。在操作完成之前超时时间已过或服务器未响应。]
       System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +800131
       System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +186
       System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) +556
       System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj) +164
       System.Data.SqlClient.TdsParserStateObject.ReadPacket(Int32 bytesExpected) +34
       System.Data.SqlClient.TdsParserStateObject.ReadBuffer() +44
       System.Data.SqlClient.TdsParserStateObject.ReadByte() +17
       System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +79
       System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +31
       System.Data.SqlClient.SqlDataReader.get_MetaData() +62
       System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +297
       System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +1005
       System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +132
       System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
       System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReaderSqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
       System.Data.SqlClient.SqlCommand.ExecuteReader() +84
     +84
     +84
     +84
     +84
     +84
        CSDN.Community.TopicDatabase.TopicDataProvider_PointForum.AskExpertTopic(String UserName, Int32 PageSize, Int32 CurrPage, Boolean toUser, Boolean checkout, Int32& count, List`1& TopicSet) +698
       CSDN.Community.PointForum.WebControls.TopicToUserPage.OnLoad(EventArgs e) +712
       System.Web.UI.Control.LoadRecursive() +47
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436_MetaData() +62
       System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior,