服务器定义了 方法调用类
public class TestClass
{
public bool GetVarForBiz( ref IVarForFeeItem<IFeeVariable, IFeeItem> varForFeeItemList )
{
return true;
}
}服务器端定义了三个接口:
接口1:
public interface IVarForFeeItem<T, U>
where T : IFeeVariable
where U : IFeeItem
{ T VarList
{
get;
set;
}
U FeeItem
{
get;
set;
}
}
接口2:
public interface IFeeVariable
{ string Name
{
get;
set;
}
string Des
{
get;
set;
}
string Type
{
get;
set;
}
string Value
{
get;
set;
} }
接口3:
public interface IFeeItem
{ string Name
{
get;
set;
}
string FeeCode
{
get;
set;
}
string ShortName
{
get;
set;
}
}
客户端调用:
static void Main(string[] args)
{ TestClass tc = new TestClass();
TestVarForFeeItem t = new TestVarForFeeItem();
IVarForFeeItem<IFeeVariable, IFeeItem> i = (IVarForFeeItem<IFeeVariable, IFeeItem>)t;
bool b = tc.GetVarForBiz(ref t);
Console.ReadLine();
}这种调用方法失败,请问大家应如何调用呢? 还是需要修改服务器方法的参数呢?
在客户端定义继承自服务器接口的类: public class TestVarForFeeItem : IVarForFeeItem<TestFeeVariable, TestFeeItem>
{
private TestFeeVariable _VarList;
private TestFeeItem _FeeItem;
public TestFeeVariable VarList
{
get
{
return _VarList;
}
set
{
_VarList = value;
}
}
public TestFeeItem FeeItem
{
get
{
return _FeeItem;
}
set
{
_FeeItem = value;
}
}
} public class TestFeeItem : IFeeItem
{
private string _Name;
private string _FeeCode;
private string _ShortName;
private string _IsEnable;
private string _MustCharge;
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
}
}
public string FeeCode
{
get
{
return _FeeCode;
}
set
{
_FeeCode = value;
}
}
public string ShortName
{
get
{
return _ShortName;
}
set
{
_ShortName = value;
}
}
public string IsEnable
{
get
{
return _IsEnable;
}
set
{
_IsEnable = value;
}
}
public string MustCharge
{
get
{
return _MustCharge;
}
set
{
_MustCharge = value;
}
}
}
public class TestClass
{
public bool GetVarForBiz( ref IVarForFeeItem<IFeeVariable, IFeeItem> varForFeeItemList )
{
return true;
}
}服务器端定义了三个接口:
接口1:
public interface IVarForFeeItem<T, U>
where T : IFeeVariable
where U : IFeeItem
{ T VarList
{
get;
set;
}
U FeeItem
{
get;
set;
}
}
接口2:
public interface IFeeVariable
{ string Name
{
get;
set;
}
string Des
{
get;
set;
}
string Type
{
get;
set;
}
string Value
{
get;
set;
} }
接口3:
public interface IFeeItem
{ string Name
{
get;
set;
}
string FeeCode
{
get;
set;
}
string ShortName
{
get;
set;
}
}
客户端调用:
static void Main(string[] args)
{ TestClass tc = new TestClass();
TestVarForFeeItem t = new TestVarForFeeItem();
IVarForFeeItem<IFeeVariable, IFeeItem> i = (IVarForFeeItem<IFeeVariable, IFeeItem>)t;
bool b = tc.GetVarForBiz(ref t);
Console.ReadLine();
}这种调用方法失败,请问大家应如何调用呢? 还是需要修改服务器方法的参数呢?
在客户端定义继承自服务器接口的类: public class TestVarForFeeItem : IVarForFeeItem<TestFeeVariable, TestFeeItem>
{
private TestFeeVariable _VarList;
private TestFeeItem _FeeItem;
public TestFeeVariable VarList
{
get
{
return _VarList;
}
set
{
_VarList = value;
}
}
public TestFeeItem FeeItem
{
get
{
return _FeeItem;
}
set
{
_FeeItem = value;
}
}
} public class TestFeeItem : IFeeItem
{
private string _Name;
private string _FeeCode;
private string _ShortName;
private string _IsEnable;
private string _MustCharge;
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
}
}
public string FeeCode
{
get
{
return _FeeCode;
}
set
{
_FeeCode = value;
}
}
public string ShortName
{
get
{
return _ShortName;
}
set
{
_ShortName = value;
}
}
public string IsEnable
{
get
{
return _IsEnable;
}
set
{
_IsEnable = value;
}
}
public string MustCharge
{
get
{
return _MustCharge;
}
set
{
_MustCharge = value;
}
}
}
解决方案 »
- 怎么连不上本机的Sql数据库但能连上别的机子Sql数据库
- 一个条码控件在一张纸上打印两次
- C# 记事本智能提示 怎么实现?
- Remoting中,Client是否必须对MarshalByRefObject所在的程序集进行引用?
- 用C#如何将PDF格式的文件转换成TIF格式
- 请教C#怎么进行窗口之间的数据传递,怎么使用全局变量
- 局部类如何分离机器产生的代码和用户书写的代码
- C#菜鸟问题。
- 如何将两个DropDownList控件关联起来,在线等,请大家帮忙! 完事就结帖
- 急:C#打印怎么换页?
- 怎么样在flexgrid中添加一列combox?
- C#中,如何获取一个人姓名的姓氏,包括有复姓的(两个字的姓,三个字的姓)。其中姓名是一个参数name,不需要用sql语句
public class TestVarForFeeItem : IVarForFeeItem<TestFeeVariable, TestFeeItem> 行不行我的本意是想GetVarForBiz( ref IVarForFeeItem<IFeeVariable, IFeeItem> varForFeeItemList )方法中参数,不暴露服务器端定义的实体类。就是不把在服务器端定义的Entity型实体直接给客户端使用,所以定义了接口。 因为服务器端程序和客户端程序 是两个程序
{
TestClass tc = new TestClass();
TestVarForFeeItem t = new TestVarForFeeItem();
IVarForFeeItem<IFeeVariable, IFeeItem> i = (IVarForFeeItem<IFeeVariable, IFeeItem>)t;
bool b = tc.GetVarForBiz(i);
Console.ReadLine();
}这样写编译没问题 ,
但是执行这一步: IVarForFeeItem<IFeeVariable, IFeeItem> i = (IVarForFeeItem<IFeeVariable, IFeeItem>)t;
就会报:无法将类型为“TestVarForFeeItem”的对象强制转换为类型“IVarForFeeItem“的错误
public class TestVarForFeeItem : IVarForFeeItem<IFeeVariable, IFeeItem>
{
private IFeeVariable _VarList;
private IFeeItem _FeeItem;
public IFeeVariable VarList
{
get
{
return _VarList;
}
set
{
_VarList = value;
}
}
public IFeeItem FeeItem
{
get
{
return _FeeItem;
}
set
{
_FeeItem = value;
}
}
}调用的时候 这样调用:
TestClass tc = new TestClass();
TestVarForFeeItem t = new TestVarForFeeItem();
Console.Write(tc.GetVarForBiz((IVarForFeeItem<IFeeVariable, IFeeItem>)t));
Console.ReadLine();