我是新来的,所以请在标记我的问题之前-1请提供您的建议。
在我的下面的代码中,我想创建一个泛型类型函数,而不是“SendFirstRequest”和“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;
}
答案 0 :(得分:1)
问题在于MyFirstRequest
,MyFirstResponse
,MySecondRequest
和MySecondResponse
之间没有明显的关系来有效地使用泛型。这些类型甚至具有不同的属性名称,因为它们以类名为前缀(这也会阻止使用dynamic
)。
这似乎不是仿制药的好选择。如果你不仅仅是这两种类型,反射会减少代码,但会将错误推迟到运行时。
一些设计变更会使仿制品变得更加合理:
Response
类的属性MyFirstResponse
和MySecondResponse
CreateRequest
类型添加Request
方法,该方法将返回相应的Response
类型。