Вам нужно поделиться библиотекой со всеми вашими приложениями. Итак, давайте предположим, что у вас есть 3 проекта XAP с именами Project1.xap, Project2.xap и Project3.xap. Все эти проекты должны ссылаться на другую библиотеку классов Silverlight, которая имеет общую логику. В этом общем проекте вы можете создать интерфейс, который реализуется корневым приложением. Давайте назовем это IApplicationContext.
Корневое приложение - это файл XAP, который загружает все остальные XAP. Давайте назовем это Root.xap. Этот будет управлять аутентификацией и создаст реализацию IApplicationContext, которую он передаст другим XAP при создании.
// This is available for all projects (shared.dll)
public interface IApplicationContext
{
string Username { get; }
Guid SessionId { get; }
// ...
}
// This is implemented in the root application (Root.xap)
public class MyAppContext : IApplicationContext
{
public string Username { get; private set; }
public Guid SessionId { get; private set; }
// ...
}
Вы можете делить что угодно между приложениями, и это будет поддерживать тестирование ваших отдельных проектов, потому что вы всегда можете заглушить / насмешить IApplicationContext.