制作iAuthorizor或TwitterContext Global /访问



从linqtotwitter iauthorizer

提取bearertoken的另一项后续访问

我在应用程序中成功使用了Auth/Context/BearerToken,但是我现在想使用L2T库来检查费率。我需要TwitterContext来这样做,但是我现在不超出Twitterctx范围。

是否可以将其设置为公共类,以便我可以从任何地方访问它而无需重新授权?

预先感谢您。

有不同的方法可以做到这一点。这是您可以去Singleton路线或工厂方法的夫妇。

注意: 关于单身人士是否是适当使用的模式,或者是对对象的全局引用是否为 一点都合适,但这不是您要问的。

public class TwitterContextService
{
    static TwitterContext twitterCtx;
    public static TwitterContext Instance
    {
        get
        {
            if (twitterCtx == null)
                twitterCtx = CreateTwitterContext();
            return twitterCtx;
        }
    }
    public static TwitterContext CreateTwitterContext()
    {
        var auth = new ApplicationOnlyAuthorizer()
        {
            CredentialStore = new InMemoryCredentialStore
            {
                ConsumerKey = Environment.GetEnvironmentVariable(OAuthKeys.TwitterConsumerKey),
                ConsumerSecret = Environment.GetEnvironmentVariable(OAuthKeys.TwitterConsumerSecret)
            },
        };
        return new TwitterContext(auth);
    }
}

然后有两种方法可以使用此方法 -

作为单身人士:

TwitterContext twitterCtx = TwitterContextService.Instance;

或作为工厂方法:

TwitterContext twitterCtx = TwitterContextService.CreateTwitterContext();

另外,您可以使用IOC容器(网络上的大量信息和可用库),并将依赖项传递到使用TwitterContext的代码中。我想有几种不同的方法。

最新更新