繁体   English   中英

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

[英]Is it appropriate to use extension methods on types that you own?

我的解决方案中具有以下类,其中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);
     }
}

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

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

  • 由于某种原因, GetResponse需要与Response GetResponse在不同的程序集中(并且存在有效的原因)

否则,如果出于某些原因希望将代码文件分开,则可以只使用partial类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM