Da qualche giorno su XeDotNet ho realizzato una interessante funzionalità 
che consente di postare i propri articoli tecnici direttamente da Windows Live 
Writer. In realtà quello che ho fatto è di implementare le MovableType API 
ritagliandone una versione ad-hoc per il sito web. Assodato che mi sono 
divertito parecchio (con questo tipo di lavoretti mi sento proprio a mio agio) 
ho avuto l'occasione di mettere il naso negli assembly di Live Writer. Sono così 
riuscito a scoprire come fare per istanziare uno degli Adapter (vi ricordate 
IMHO?). Ecco l'esempio.
using System;
using System.Collections.Generic;
using System.Text;
using WindowsLive.Writer.BlogClient.Clients;
using WindowsLive.Writer.BlogClient;
using WindowsLive.Writer.CoreServices.Settings;
using Microsoft.Win32;
using WindowsLive.Writer.Extensibility.BlogClient;
using WindowsLive.Writer.CoreServices;
namespace TestWriter
{
    class Program
    {
        static void Main(string[] args)
        {
            ApplicationEnvironment.Initialize();
            WebProxySettings.ProxyEnabled = false;
            ISettingsPersister persister = 
               
new RegistrySettingsPersister(Registry.CurrentUser, @"Software\Windows Live Writer");
            IBlogCredentials credentials = 
              new BlogCredentials(new SettingsPersisterHelper(persister));
            IBlogCredentialsAccessor credentialsAccessor = 
              new BlogCredentialsAccessor("dummy-value", credentials);
            credentials.Username = "username";
            credentials.Password = "password";
            MovableTypeClient client = new MovableTypeClient(
                new Uri("http://localhost/services/movabletype.aspx"),
                credentialsAccessor,
                PostFormatOptions.Unknown);
            try
            {
                BlogPost[] posts = client.GetRecentPosts("0", 5);
                Console.WriteLine(posts.Length);
            }
            catch (BlogClientInvalidServerResponseException ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.ErrorMessage);
            }
        }
    }
}
A cosa serve? Ad esempio come nel mio caso a 
testare le API implementate, ma sono convinto che qualche altro utilizzo si 
possa trovare facilmente.
powered by IMHO 1.3