Adicionar Contentype a uma lista por ContentType Name [Quick Dirty tip]

Hoje eu tenho uma situação para adicionar o tipo de conteúdo a uma lista rapidamente, então, conforme a lista é criada, eu preciso adicionar o tipo de conteúdo existente à lista. Fiz uma pequena pesquisa, mas todos estão apontando para atualizar o conteúdo ype por ID. então, aqui está um trecho que usei para lidar com a situação. Eu sei que não é prefeito, mas fará o truque.

Vamos detalhar o código, aqui meus parâmetros,

  1. Contexto depois de autenticado
  2. Matriz de lista precisa adicionar um tipo de conteúdo

Fluxo do módulo conforme abaixo,

  1. Obtenha todo o tipo de conteúdo da coleção de tipo de conteúdo
  2. Aqui, minha suposição é o nome da lista e o nome do tipo de conteúdo é o mesmo
  3. Vola agora temos os detalhes do tipo de conteúdo, como nome e ID
  4. Obtenha a lista por nome
  5. Defina ContentTypesEnabled = true .
  6. Em seguida, podemos adicionar o tipo de conteúdo à lista por ID do tipo de conteúdo
  7. context.ExecuteQuery ()

Pronto, a lista é atualizada com tipo de conteúdo por nome, fique à vontade para dar seus comentários e sugestões.

public void setListContentType(ClientContext context, String listArray)
{
Web web = context.Web;
try
{
dynamic listJSON = Newtonsoft.Json.JsonConvert.DeserializeObject(listArray);
foreach (var lstItem in listJSON)
{
ContentTypeCollection sitContType = web.ContentTypes;
context
.Load(sitContType);
context
.ExecuteQuery();
foreach (ContentType ctype in sitContType)
{
if (lstItem.Name == ctype.Name)
{
Console.WriteLine("Available Cont Type: " + ctype.Name+" ID : "+ctype.Id);
ContentType ct = context.Web.ContentTypes.GetById(ctype.Id.ToString());
List lst = context.Web.Lists.GetByTitle(lstItem.Name.ToString());
lst
.ContentTypesEnabled = true;
lst
.ContentTypes.AddExistingContentType(ct);
}
}
context
.ExecuteQuery();
Console.WriteLine(lstItem.Name+" list content type is updated");
}
}
catch (Exception e)
{
Console.WriteLine("Something went wrong in setListContentType Module : " + e);
}
}