在您拥有的类型上使用扩展方法是否合适?

时间:2018-07-31 16:23:29

标签: c# extension-methods

我的解决方案中有以下类,其中的Request类可以创建Response实例:

public class Request
{
    public Guid Id {get;} 

    public int UserId {get;}

    public string SomeInfo {get;}

    public Request(Guid id, int userId, string someInfo)
    {
        Id = id;
        UserId = userId;
        SomeInfo = someInfo;
    }

    public Response GetResponse(string content)
    {
        return new Response(requestId, content);
    }
}

public class Response
{
    public Guid Id {get;}

    public Guid RequestId {get;}

    public string Content {get;}

    public Response(Guid requestId, string content)
    {
         Id = Guid.NewGuid();
         RequestId = requestId;
         Content = content;
    }
}

假设我删除了GetResponse方法并将其代码移至扩展方法中,如下所示:

public static class RequestExtensions
{
     public static Response GetResponse(this Request request, string content)
     {
           return new Response(request.Id, content);
     }
}

扩展方法是否正确使用?在您无法访问该类型的情况下,我了解这些需求。但这对我拥有的类型使用扩展方法有意义吗?

1 个答案:

答案 0 :(得分:2)

在我看来(尽管这个问题是基于观点的)在一种情况下这样做很有意义:

  • GetResponse由于某些原因(与存在的原因)需要与Response驻留在不同的程序集中

否则,如果出于某些原因想要分离代码文件,则只能使用partial类。