public static void Register(Page page) {
DirectProviderCache cache = DirectProviderCache.GetInstance();
DirectProvider provider;
string hash = GetHashKey(page);
string key = "Ext.app.REMOTING_API." + hash;
//After being configured, the provider should be cached.
if (!cache.ContainsKey(key)) {
provider = new DirectProvider("Ext.app.REMOTING_API", "/DirectHandler.ashx?hash=" + hash);
provider.Configure(new object[] { page });
cache.Add(key, provider);
}
else {
provider = cache[key];
}
string script = provider.ToString();
page.ClientScript.RegisterClientScriptBlock(page.GetType(), "ApiHandler", script, true);
}
private static string GetHashKey(Object o) {
return o.GetType().GetHashCode().ToString();
}