Обзор:Как реализовать оператор using при инициализации службы?
Я наткнулся на какой-то код инициализации в XRM проекте, где экземпляры инициализируемого реализации IDisposible но не окружающих, используя блок на экземплярах.
В примерах у меня есть looked at внутри используемого блока есть метод экземпляра, вызываемый службой. Но в моем случае ниже экземпляр службы просто инициализирован. Сами методы обслуживания не вызываются до тех пор, пока они не будут включены в код в частных методах.
Вопрос:
Как использовать используя блок для инициализации экземпляра службы?
Пример кода 1: (Service Init)
public static void Init(string connectionString, string name)
{
instanceName = name;
CreateSourceServiceObjects(connectionString);
}
//Service instances just Init here no methods are called:
private static void CreateSourceServiceObjects(string connectionString)
{
var connection = CrmConnection.Parse(connectionString);
sourceService = new OrganizationService(connection);
sourceContext = new OrganizationServiceContext(sourceService);
}
//Example of where the sourceService method's are used:
public static Entity GetUserInfo(Guid userId)
{
Entity systemuser = sourceService.Retrieve("systemuser", userId, new ColumnSet(true));
return systemuser;
}
Пример кода 2: (Моя попытка реализации с помощью заявления)
private static void CreateSourceServiceObjects(string connectionString)
{
var connection = CrmConnection.Parse(connectionString);
//Added a Using block to auto dispose OrganizationService and OrganizationServiceContext
using(sourceService = new OrganizationService(connection))
using (sourceContext = new OrganizationServiceContext(sourceService))
{
//should there be any code in here?
}
}
Хорошо, тогда это имеет смысл. –