接口中函数传递不同各类型的参数

ztmsimon 2016-12-16 02:30:54
我写一个接口,里面有一个函数,传递的参数是各种类型的,如何处理?
原来想实现这种都是用重载的方式,但是我觉得重载过于麻烦,能否有更简单的实现方式?(object就算了啊...)

代码如下:
public interface Ict
{
bool Iconnect(paraments);
}

paraments可能是int,string或者自定义类型的参数。
...全文
799 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2016-12-16
  • 打赏
  • 举报
回复
public interface Ict<T> { bool Iconnect<T>( T paraments); }
yy18251968697 2016-12-16
  • 打赏
  • 举报
回复
接口实现必须与接口保持一致,也要用泛型
ztmsimon 2016-12-16
  • 打赏
  • 举报
回复
我现在代码写成: public interface Ict { bool Iconnect<T>(T t); } public class kkk:Ict { public class comParament { public int address; public int port; } public bool Iconnect<comParament>(comParament param){ param.address = 1; param.port= 1; } } 这样写会报错...
正怒月神 2016-12-16
  • 打赏
  • 举报
回复
楼上已经说的差不多了。重载或者泛型
xinweilee 2016-12-16
  • 打赏
  • 举报
回复
要么方法重载,要么接口继承,要么一个统一接口方法参数就是object;前两种可以省去一大堆的类型判断,object型就需要判断参数是什么类型要进行何种操作了 自定义类型和上面例子中string操作时一样的
yy18251968697 2016-12-16
  • 打赏
  • 举报
回复
比如你自定义了一个A的类型 class A { ........ ......... } 调用就是这样: Ict entity=new kkk(); A a=new A(); entity.Iconnect<A>(a); 和基本类型一样用的
ztmsimon 2016-12-16
  • 打赏
  • 举报
回复
引用 10 楼 yy18251968697 的回复:
public interface Ict { bool Iconnect<T>(T obj); } public class kkk:Ict { public bool Iconnect<T>(T obj); } 调用: Ict entity=new kkk(); string a=string.Empty; entity.Iconnect<string>(a); 其实没必要搞接口
这里public bool Iconnect<T>(T obj); 这里的T如果我使用自定义类型要如何做啊?
ztmsimon 2016-12-16
  • 打赏
  • 举报
回复
引用 8 楼 xinweilee 的回复:
说白了你还是想定义一个统一接口呗,参数可能是不同类型的,那这个接口的参数类型必然是object
必须在定义接口的时候就定义好参数类型吗?不能在定义接口中的方法的参数时再使用泛型吗?
yy18251968697 2016-12-16
  • 打赏
  • 举报
回复
public interface Ict { bool Iconnect<T>(T obj); } public class kkk:Ict { public bool Iconnect<T>(T obj); } 调用: Ict entity=new kkk(); string a=string.Empty; entity.Iconnect<string>(a); 其实没必要搞接口
xuzuning 2016-12-16
  • 打赏
  • 举报
回复
重载是最简单、直接的方法 如果方法体内将对传入的参数做同样形式的处理,那么可以用泛型 T 是 template 模版 的缩略表示 否则一大堆 case 还不如重载来的简洁
xinweilee 2016-12-16
  • 打赏
  • 举报
回复
说白了你还是想定义一个统一接口呗,参数可能是不同类型的,那这个接口的参数类型必然是object interface Ict { bool Iconnect(object parameter); } interface Ict<T> : Ict { bool Iconnect<T>(T paramerter); } class BoolIctClass : Ict<bool> { public bool Iconnect<T>(T paramerter) { throw new NotImplementedException(); } public bool Iconnect(object parameter) { if (parameter is bool) { return Iconnect<bool>((bool)parameter); } return false; } }
巴士上的邂逅 2016-12-16
  • 打赏
  • 举报
回复
1楼说的方法也可以啊,接口怎样,实现类就怎样
ztmsimon 2016-12-16
  • 打赏
  • 举报
回复
还有其他方法么?dynamic不适合我们这刚开始学习的
巴士上的邂逅 2016-12-16
  • 打赏
  • 举报
回复
引用 4 楼 ztmsimon 的回复:
[quote=引用 3 楼 yuankaiwsl 的回复:] 用dynamic
怎么用啊? 能不能给个实例?[/quote]把你前边说的object换成dynamic
ztmsimon 2016-12-16
  • 打赏
  • 举报
回复
引用 3 楼 yuankaiwsl 的回复:
用dynamic
怎么用啊? 能不能给个实例?
巴士上的邂逅 2016-12-16
  • 打赏
  • 举报
回复
用dynamic
ztmsimon 2016-12-16
  • 打赏
  • 举报
回复
呵呵 谢谢,但是这个泛型写在这里后不知道实现接口的类函数怎么写了...
xinweilee 2016-12-16
  • 打赏
  • 举报
回复
泛型 public interface Ict { bool Iconnect<T>( T paraments); }

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧