将类作为参数传递的泛型方法
本文关键字:泛型方法 参数传递 | 更新日期: 2023-09-27 18:14:14
我是新来的,所以请在标记我的问题-1之前提供您的建议。
在我下面的代码中,我想创建一个泛型类型函数,而不是"sendfirststrequest"answers"SendSecondRequest"。或者我们如何传递和强制转换对象?
static void Main(string[] args)
{
MyFirstRequest objRequest1 = new MyFirstRequest
{
MyFirstRequest_ID = 1
};
SendFirstRequest(objRequest1);
MySecondRequest objRequest2 = new MySecondRequest
{
MySecondRequest_ID = 1
};
SendSecondRequest(objRequest2);
}
public static MyFirstResponse SendFirstRequest(MyFirstRequest objRequest)
{
MyFirstResponse objResponse = CreateDate1(objRequest);
return objResponse;
}
public static MySecondResponse SendSecondRequest(MySecondRequest objRequest)
{
MySecondResponse objResponse = CreateDate2(objRequest);
return objResponse;
}
public static MyFirstResponse CreateDate1(MyFirstRequest request)
{
MyFirstResponse objRespo = new MyFirstResponse
{
MyFirstResponse_Name = "A",
MyFirstResponse_Address = "Address1"
};
return objRespo;
}
public static MySecondResponse CreateDate2(MySecondRequest request)
{
MySecondResponse objRespo = new MySecondResponse
{
MySecondResponse_Name = "A",
MySecondResponse_Address = "Address1"
};
return objRespo;
}
问题是MyFirstRequest
、MyFirstResponse
、MySecondRequest
和MySecondResponse
之间没有明显的关系来有效地利用泛型。这些类型甚至有不同的属性名,因为它们以类名为前缀(这也会防止使用dynamic
)。
这似乎不是泛型的好选择。如果有以上两种类型,反射可以减少代码,但会将错误延迟到运行时。
使泛型更合理的一些设计更改:
- 去掉
Response
类属性的类名前缀 - 使用一个基类或接口来定义
MyFirstResponse
和MySecondResponse
(现在)的通用属性 - 为每个
Request
类型添加一个CreateRequest
方法,以返回相应的Response
类型。