Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将类作为参数传递的泛型方法_C#_C# 4.0 - Fatal编程技术网

C# 将类作为参数传递的泛型方法

C# 将类作为参数传递的泛型方法,c#,c#-4.0,C#,C# 4.0,我是新来的,所以请在标记我的问题-1之前提供你的建议 在下面的代码中,我想创建一个泛型类型函数,而不是“SendFirstRequest”和“SendSecondRequest”。或者我们如何传递和投射对象 static void Main(string[] args) { MyFirstRequest objRequest1 = new MyFirstRequest {

我是新来的,所以请在标记我的问题-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;
    }

问题是
MyFirstRequest
MyFirstResponse
MySecondRequest
MySecondResponse
之间没有明显的关系,无法有效地使用泛型。这些类型甚至有不同的属性名,因为它们的前缀是类名(这也会阻止使用
dynamic

这似乎不是泛型的好选择。如果不止这两种类型,反射将减少代码,但会将错误推迟到运行时

一些使泛型更合理的设计变更:

  • 响应
    类的属性中去掉类名前缀
  • 使用基类或接口定义
    MyFirstResponse
    MySecondResponse
  • CreateRequest
    方法添加到每个
    Request
    类型,该类型将返回相应的
    响应
    类型

。我的问题是对象或泛型类型。