我是C#的新手,我面临着具有以下结构的类:

public class SimpleGetter<TSubs> : GetterBase<TSubs>, ISubscriptionsSingleGetter<TSubs>
    where TSubs : class, ISimpleSubscription, new()
{
    UserSubscriptionsResponse<TSubs> ISubscriptionsSingleGetter<TSubs>.Get()
    {
        return ((ISubscriptionsSingleGetter<TSubs>)this).Get(null);
    }

    UserSubscriptionsResponse<TSubs> ISubscriptionsSingleGetter<TSubs>.Get(string userId)
    {
        return GetSubsResponse(userId);
    }
}


我需要将userID传递给get()函数(如果可能),但是我对如何做到这一点感到困惑。我试图对此进行一些研究,但我什至不知道这种定义类的方式叫什么。我来自目标c,那里的事情似乎更加直接。

最佳答案

我什至不知道这种定义类的方式叫什么


这是一个通用类。

  public class SimpleGetter<TSubs> : GetterBase<TSubs>, ISubscriptionsSingleGetter<TSubs>
    where TSubs : class, ISimpleSubscription, new()


它具有一个通用类型参数TSubs。此类继承GetterBase<TSubs>并实现接口ISubscriptionsSingleGetter<TSubs>。此外,TSubs必须是引用类型,并且必须具有实现ISimpleSubscription接口的无参数构造函数。

public class FakeSubs : ISimpleSubscription
{
    public FakeSubs()
    {

    }

    // Here you have to implement ISimpleSubscription.
    // You could also define any properties, methods etc.
}

// Now you could use your generic class as below:

var simpleGetter = new SimpleGetter<FakeSubs>();


创建了上述实例后,您可以将Get方法称为Tewr,并在其注释中指出:

var response = ((ISubscriptionsSingleGetter<FakeSubs>)simpleGetter).Get(42);

08-07 19:05