Как установить свойство, значением которого является enum - PullRequest
0 голосов
/ 09 мая 2018

Я новичок в C # и .NET Framework. Я создаю небольшое консольное приложение для «блокировки» URL-адресов из индекса Бинга, потому что они были случайно проиндексированы. Для этого я использую API-интерфейс Bing для веб-мастеров .

Я не понимаю, как установить два свойства объекта BlockedUrl ( EntityType и RequestType ). Объект BlockedUrl передается AddBlockedUrl при отправке запроса на блокировку.

Установка значений свойств для Url , Дата и DaysToExpire имеет смысл - им даны значения string, DateTime и DaysToExpire соответственно в качестве их подписей указывают.

По подписи EntityType:

public BlockedUrl.BlockedUrlEntityType EntityType { get; set; }

Я не понимаю BlockedUrl.BlockedUrlEntityType или как я буду с ним работать. Свойство RequestType аналогично.

Мой текущий код ниже:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string url = "https://url/dir/path/";
            var api = new WebmasterApi.WebmasterApiClient();
            var blockedURLObj = new WebmasterApi.BlockedUrl();
            blockedURLObj.Url = url;
            blockedURLObj.Date = new DateTime(2018, 5, 8, 8, 00, 00);
            blockedURLObj.DaysToExpire = 90;
            blockedURLObj.EntityType = "Directory"; //error: "Cannot implicitly convert type 'string' to ConsoleApp1.WebmasterApi.BlockedUrl.BlockedUrlEntityType"
            blockedURLObj.RequestType = "FullRemoval"; //error: "Cannot implicitly convert type 'string' to ConsoleApp1.WebmasterApi.BlockedUrl.BlockedUrlRequestType"

        try
        {
            api.AddBlockedUrl(url, blockedURLObj);
            Console.WriteLine("Success!");
            Console.ReadLine(); 
        }
        catch(Exception e)
        {
            Console.WriteLine(e.ToString());
            Console.ReadLine();
        }
    }
} 

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

Свойство EntityType должно быть установлено с использованием значения перечисления, как указано здесь: https://msdn.microsoft.com/en-us/library/hh969362.aspx

Свойство RequestType должно быть установлено с использованием значения перечисления, как указано здесь: https://msdn.microsoft.com/en-us/library/hh969383.aspx

Например:

blockedURLObj.EntityType = BlockedUrl.BlockedUrlEntityType.Directory;
blockedURLObj.RequestType = BlockedUrl.BlockedUrlRequestType.FullRemoval;
0 голосов
/ 09 мая 2018

Так что EntityType и RequestType выглядят как перечисления. Вы можете установить его через blockedURLObj.RequestType = WebmasterApi.BlockedUrl.BlockedUrlRequestType.FullRemoval; и blockedURLObj.EntityType = WebmasterApi.BlockedUrl.BlockedUrlEntityType.Directory;

0 голосов
/ 09 мая 2018

BlockedUrl.BlockedUrlEntityType - это перечисление

Так что вам нужно что-то вроде

blockedURLObj.EntityType = BlockedUrl.BlockedUrlEntityType.Directory;
blockedURLObj.RequestType = BlockedUrl.BlockedUrlRequestType.FullRemoval;

Подробнее о перечислениях здесь https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/enum

...