如何在C#中设置BlockedUrl对象的枚举类型属性
解决Bing Webmaster API枚举属性赋值问题
嘿,这个问题很典型——你把枚举类型当成普通字符串来赋值啦!EntityType和RequestType都是枚举类型,不是字符串,所以不能直接用"Directory"或者"FullRemoval"这种字符串赋值,得用对应的枚举成员才行。
正确的枚举赋值方式
当你添加Bing Webmaster API的服务引用后,BlockedUrl类里已经自动生成了对应的枚举定义:
BlockedUrlEntityType:包含URL实体类型的可选值(比如目录、单页面等)BlockedUrlRequestType:包含移除请求的类型选项(比如完全移除、部分移除等)
你需要通过BlockedUrl类来访问这些枚举的成员,替换掉出错的两行代码:
blockedURLObj.EntityType = WebmasterApi.BlockedUrl.BlockedUrlEntityType.Directory; blockedURLObj.RequestType = WebmasterApi.BlockedUrl.BlockedUrlRequestType.FullRemoval;
修正后的完整代码
这里是替换后的可运行代码:
using System; 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 = WebmasterApi.BlockedUrl.BlockedUrlEntityType.Directory; blockedURLObj.RequestType = WebmasterApi.BlockedUrl.BlockedUrlRequestType.FullRemoval; try { api.AddBlockedUrl(url, blockedURLObj); Console.WriteLine("Success!"); Console.ReadLine(); } catch(Exception e) { Console.WriteLine(e.ToString()); Console.ReadLine(); } } } }
小技巧:查看枚举可选值
如果你不确定枚举有哪些可用成员,可以在Visual Studio里:
- 把光标放在
BlockedUrlEntityType上,按F12转到定义,就能看到所有枚举选项 - 或者输入
BlockedUrl.BlockedUrlEntityType.时,按Ctrl+Space触发智能提示,直接选择需要的成员
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

