【问题标题】:Is it possible to contrain a class from a third-party web service?是否可以包含来自第三方 Web 服务的类?
【发布时间】:2013-08-26 18:00:13
【问题描述】:

我有两个类,其中 1 是继承的。还有许多与 Acme123Response 类似的其他类具有不同的响应类。 IE。应用信息。

ApplicationInfo 属于第三方网络服务。问题是,鉴于 ApplicationInfo 和其余部分不在我的直接控制范围内,是否可以向 BuyerResponse 添加 where 约束?

public class Acme123Response : BuyerResponse<ApplicationInfo>
{
    public Acme123Response(ApplicationInfo response)
        : base(response)
    {
    }
}

public abstract class BuyerResponse<T> : ResponseBase
{
    readonly T _response;

    protected T Response
    {
        get { return _response; }
    }

    protected BuyerResponse(T response)
    {
        _response = response;

        // Do something else
    }
}

【问题讨论】:

  • 换句话说,例如将BuyerResponse 限制为ApplicationInfo 的子类?那么是的,你应该能够做到这一点。
  • ApplicationInfo 是第三方类。我想将 T 限制为来自第三方的多个类之一,可能使用接口或其他东西。关于如何处理的任何细节。

标签: c# inheritance constraints


【解决方案1】:

如果我正确理解了您的 cmets,那么您的问题是您能否为第 3 方程序集中定义的类定义一个基本接口。 AFAIK 这是不可能的(即使您可以分叉源代码,这也不是我想做的事情):我认为您可以做的最好的事情是定义实现统一接口的包装类/adapters,然后将您的通用约束建立在此之上。

这还具有将您自己的实现与具有接口的 3rd 方类屏蔽的效果,这通常是您无论如何都想做的事情。

【讨论】:

  • 我想我明白了,所以创建一个继承ApplicationInfo的类MyWrapperClass,接口IMyWrapperClass
猜你喜欢
  • 2012-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-08
  • 2018-08-08
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
相关资源
最近更新 更多