C# 将类作为参数传递的泛型方法
我是新来的,所以请在标记我的问题-1之前提供你的建议 在下面的代码中,我想创建一个泛型类型函数,而不是“SendFirstRequest”和“SendSecondRequest”。或者我们如何传递和投射对象C# 将类作为参数传递的泛型方法,c#,c#-4.0,C#,C# 4.0,我是新来的,所以请在标记我的问题-1之前提供你的建议 在下面的代码中,我想创建一个泛型类型函数,而不是“SendFirstRequest”和“SendSecondRequest”。或者我们如何传递和投射对象 static void Main(string[] args) { MyFirstRequest objRequest1 = new MyFirstRequest {
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
)
这似乎不是泛型的好选择。如果不止这两种类型,反射将减少代码,但会将错误推迟到运行时
一些使泛型更合理的设计变更:
- 从
类的属性中去掉类名前缀响应
- 使用基类或接口定义
和MyFirstResponse
MySecondResponse
- 将
方法添加到每个CreateRequest
类型,该类型将返回相应的Request
类型响应