webservice 中使用反射

我想实现客户端不同的类都调用同一个webservice类的GetTable()方法。在webservice中判断调用者的类型,然后生成对应的数据访问类,调用数据访问类的GetTable()方法。请问可以实现吗

在webservice中判断调用者的类型
这个是啥意思?让webservice自动判断吗?
不可能吧?建议你在webservice的方法加个参数,根据参数的不同动态加载会不会好一点

namespace SyncWebService
{
///
/// DataSyncWebService 的摘要说明
///
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
[System.ComponentModel.ToolboxItem(false)]
public class DataSyncWebService : System.Web.Services.WebService
{
public struct FieldDefine
{
public string OldName;
public string NewName;
}

    string _error = string.Empty;

    DataSyncDriver _driver = null;

    class Params
    {
        public static string DllName = "SyncDriver";

        public static string DllPath
        {
            get
            {
                return string.Format(AppDomain.CurrentDomain.BaseDirectory + "bin\\{0}.dll", DllName);
            }
        }

        public static string ClassFullName = "WebServiceDriver.WSDriver";
    }

    class X
    {
        public static string DllName = "DllName";

        public static string ClassFullName = "ClassFullName";
    }

    public DataSyncWebService()
    {
        InitParams();

        InitDriver();
    }

    /// <summary>
    /// 初始化驱动
    /// </summary>
    private void InitDriver()
    {
        try
        {
            //反射生成设备服务对象
            object obj = Assembly.LoadFile(Params.DllPath).CreateInstance(Params.ClassFullName);

            if (obj == null)
            {
                _error = "驱动加载失败";
                _driver = null;
                return;
            }

            _driver = obj as DataSyncDriver;

            if (_driver == null)
            {
                _error = "驱动格式错误";
                return;
            }
        }
        catch (Exception ex)
        {
            _error = ex.Message;
            _driver = null;
        }
    }

    /// <summary>
    /// 初始化参数
    /// </summary>
    private void InitParams()
    {
        if (!GlobalParam.AddANewParam(X.DllName, Params.DllName))
        {
            Params.DllName = GlobalParam.GetAParam(X.DllName);
        }

        if (!GlobalParam.AddANewParam(X.ClassFullName, Params.ClassFullName))
        {
            Params.ClassFullName = GlobalParam.GetAParam(X.ClassFullName);
        }
    }
}

}

自己看吧,我自己写的,Webservice中使用反射
DataSyncDriver 是基础类,抽象的

 namespace SyncWebService
{
    /// <summary>
    /// DataSyncWebService 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.None)]
    [System.ComponentModel.ToolboxItem(false)]
    public class DataSyncWebService : System.Web.Services.WebService
    {
        public struct FieldDefine
        {
            public string OldName;
            public string NewName;
        }

        string _error = string.Empty;

        DataSyncDriver _driver = null;

        class Params
        {
            public static string DllName = "SyncDriver";

            public static string DllPath
            {
                get
                {
                    return string.Format(AppDomain.CurrentDomain.BaseDirectory + "bin\\{0}.dll", DllName);
                }
            }

            public static string ClassFullName = "WebServiceDriver.WSDriver";
        }

        class X
        {
            public static string DllName = "DllName";

            public static string ClassFullName = "ClassFullName";
        }

        public DataSyncWebService()
        {
            InitParams();

            InitDriver();
        }

        /// <summary>
        /// 检查驱动
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        private bool CheckDriver(ref string msg)
        {
            if (_driver == null)
            {
                msg = _error;
                return false;
            }

            return true;
        }

        /// <summary>
        /// 初始化驱动
        /// </summary>
        private void InitDriver()
        {
            try
            {
                //反射生成设备服务对象
                object obj = Assembly.LoadFile(Params.DllPath).CreateInstance(Params.ClassFullName);

                if (obj == null)
                {
                    _error = "驱动加载失败";
                    _driver = null;
                    return;
                }

                _driver = obj as DataSyncDriver;

                if (_driver == null)
                {
                    _error = "驱动格式错误";
                    return;
                }
            }
            catch (Exception ex)
            {
                _error = ex.Message;
                _driver = null;
            }
        }

        /// <summary>
        /// 初始化参数
        /// </summary>
        private void InitParams()
        {
            if (!GlobalParam.AddANewParam(X.DllName, Params.DllName))
            {
                Params.DllName = GlobalParam.GetAParam(X.DllName);
            }

            if (!GlobalParam.AddANewParam(X.ClassFullName, Params.ClassFullName))
            {
                Params.ClassFullName = GlobalParam.GetAParam(X.ClassFullName);
            }
        }
    }
}

自己看吧,我自己写的,Webservice中使用反射
DataSyncDriver 是基础类,抽象的