函数本质相同,仅返回值不同,怎么合并成一个函数?

tonnycao 2012-10-30 03:15:40
两个函数的返回值都是class类型的数据类。只是根据标志的不同反回的数据类型不同(比如CLASS1,CLASSOld两个返回类),怎么能够合成一个函数完成呢?我试图使用object,最后转成需要的类型,但是没有成功。
...全文
256 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
足球中国 2012-10-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 1 楼 的回复:

public T Get<T>(参数)



绝对可以

public T Get<T> where T:new()
{
T t = new T();
return t;
}
[/Quote]
你要的就是这个。
wanghui0380 2012-10-30
  • 打赏
  • 举报
回复
实际一般IOC类基本就是我上面贴的那东西在往下扩展的结果
wanghui0380 2012-10-30
  • 打赏
  • 举报
回复
这个需要在外面在封一个接口

context<T>
{
T getInstince()
}

context.注册<类型1>("标识1")

hashtable(标识1,new context<类型1>())


context.获取类型("标识1").getInsince() //先得到context<类型1>对象,然后在调用getInsince或得实例

Hauk 2012-10-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

最后这个T直接(Class1)T,就可以得到需要类型的返回值吗?
[/Quote]

这叫泛型方法,你用什方法的时候传入的什么类型,那个T就是什么。
比如:
class classA
{}

class classB
{}

class classC
{
T test<T>(string str)
{
T t = sqlDal.GetData();
return t;
}
}


调用时:
classA aclass = test<classA>("aaaa");//因为调用的时候传入的是classA,返回的也是这个。
classB aclass = test<classB>("bbbb");//传入classB时,返回的就是classB
  • 打赏
  • 举报
回复
你把你写的拿出来,看看你那里写错了。
返回值不同用重载不就行了吗,里面的共通处理提取成一个方法
XBodhi. 2012-10-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

public T Get<T>(参数)
[/Quote]


绝对可以

public T Get<T> where T:new()
{
T t = new T();
return t;
}
stonespace 2012-10-30
  • 打赏
  • 举报
回复
返回值不同不要合并,否则你的代码将很难理解,但可以让一个函数调用另一个函数,
tonnycao 2012-10-30
  • 打赏
  • 举报
回复
看来函数里面通过发射来赋值的部分得放到外面来做才可以!
quiteman 2012-10-30
  • 打赏
  • 举报
回复
当然是使用函数模板呀。
tonnycao 2012-10-30
  • 打赏
  • 举报
回复
最后这个T直接(Class1)T,就可以得到需要类型的返回值吗?
dalmeeme 2012-10-30
  • 打赏
  • 举报
回复
返回object也是可以的,你没成功说明方法的内部代码不正确。
wuyq11 2012-10-30
  • 打赏
  • 举报
回复
public T Get<T>(参数)

110,539

社区成员

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

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

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