还有一个跟进Extract BearerToken from LinqToTwitter IAuthorizer
我在我的应用程序中成功使用了Auth / Context / BearerToken但是我现在想使用L2T库检查费率。我需要TwitterContext这样做,但我现在已经超出了twitterCtx范围。
是否可以将其设置为公共类,以便我可以从任何地方访问它而无需重新授权?
提前谢谢。
答案 0 :(得分:1)
有不同的方法可以做到这一点。这里有几个你可以去Singleton路线或工厂方法。
注意: 关于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容器(Web上的大量信息和可用库)并将依赖项传递到使用TwitterContext的代码中。我想有几种不同的方法可以做到这一点。