如何设置值为枚举的 属性

How to set a property whose value is an enum

我是 C# 和 .NET Framework 的新手。我正在为 Bing 索引中的 "block" URL 构建一个小型控制台应用程序,因为它们被意外编入索引。我正在使用 Bing Webmaster API 来执行此操作。

我不明白如何设置 BlockedUrl 对象的两个属性(EntityType and RequestType). The BlockedUrl object is passed to AddBlockedUrl 发送阻止请求时。

Url, Date, and DaysToExpire 设置 属性 值是有意义的 - 它们分别被赋予字符串、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();
        }
    }
} 

BlockedUrl.BlockedUrlEntityType 是一个枚举

所以你需要像

这样的东西
blockedURLObj.EntityType = BlockedUrl.BlockedUrlEntityType.Directory;
blockedURLObj.RequestType = BlockedUrl.BlockedUrlRequestType.FullRemoval;

这里有更多关于枚举的信息 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/enum

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;

所以 EntityTypeRequestType 看起来像枚举。您可以通过 blockedURLObj.RequestType = WebmasterApi.BlockedUrl.BlockedUrlRequestType.FullRemoval;blockedURLObj.EntityType = WebmasterApi.BlockedUrl.BlockedUrlEntityType.Directory;

进行设置