【问题标题】:How should I declare that my method require any class?我应该如何声明我的方法需要任何类?
【发布时间】:2014-03-28 11:47:28
【问题描述】:

Method 需要任何string 时,我们会这样写

void method(string str)
{
str="OK";
}

我有一个method,它需要任何class。 我的method的一小部分:

Void Post()
{
responsefromserver = new JavaScriptSerializer.Deserialize<T>(sr.ReadToEnd());
}

T-必须是任何class。 但我不知道我应该如何声明我的method 需要任何class

【问题讨论】:

    标签: c# class methods


    【解决方案1】:

    使您的方法通用并添加通用parameter constraint

    void Post<T>()
       where T: class
    {
        responsefromserver = new JavaScriptSerializer.Deserialize<T>(sr.ReadToEnd());
        // ...
    }
    

    您可以使用任何类对其进行参数化:

    Post<FooClass>(); // OK if FooClass is a class
    Post<int>(); // fail, because integer is a value type
    

    【讨论】:

      【解决方案2】:

      使其通用:

      void Post<T>()
      {
          responsefromserver = new JavaScriptSerializer.Deserialize<T>(sr.ReadToEnd());
      }
      

      然后像这样使用它:

       Post<YourClass>();
      

      如果需要,您可以constraint您的通用方法。

      【讨论】:

        【解决方案3】:

        您只需将依赖项作为参数或在您的情况下注入 - 最好注入反序列化器,可能不是在 Post() 方法级别,而是在类构造函数级别,然后在 Post() 中重用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-18
          • 1970-01-01
          • 1970-01-01
          • 2023-04-07
          相关资源
          最近更新 更多