首页 文章 精选 留言 我的

精选列表

搜索[c ],共10000篇文章
优秀的个人博客,低调大师

C#使用反射设置属性值

最近在Refix一个支持Excel文件导入导出功能时,发现有用到反射的相关技能。故而在网上查了些资料,通过代码调试加深下理解。 class Program { static void Main(string[] args) { var student = new Student() { Name = "Jack", Address = "Lingbi County", City = "Zhangyuan" }; var studentName = GetModelValue("Name", student); var studentCity = SetModelValue("City", "Wuhan", student); Console.WriteLine($"Hello World! {student.Name}, {student.City}"); } /// <summary> /// 获取类中的属性值 /// </summary> /// <param name="FieldName"></param> /// <param name="obj"></param> /// <returns></returns> public static string GetModelValue(string FieldName, object obj) { try { Type Ts = obj.GetType(); object o = Ts.GetProperty(FieldName).GetValue(obj, null); string Value = Convert.ToString(o); if (string.IsNullOrEmpty(Value)) return null; return Value; } catch { return null; } } /// <summary> /// 设置类中的属性值 /// </summary> /// <param name="FieldName"></param> /// <param name="obj"></param> /// <returns></returns> public static bool SetModelValue(string FieldName, string Value, object obj) { try { Type Ts = obj.GetType(); object v = Convert.ChangeType(Value, Ts.GetProperty(FieldName).PropertyType); Ts.GetProperty(FieldName).SetValue(obj, v, null); return true; } catch { return false; } } public class Student { public string Name { get; set; } public string Address { get; set; } public string City { get; set; } } } 代码中主要使用到GetType(), GetValue(), 以及SetValue(),不过在应用中比较容易出错,尤其是类型转换的时候。 在此做个备忘录,后续持续跟进。 墨匠

优秀的个人博客,低调大师

c# 利用IMap 收取163邮件

最近我要做一个爬虫。这个爬虫需要如下几个步骤: 1 填写注册内容(需要邮箱注册) 2 过拖拽验证码(geetest) 3 注册成功会给邮箱发一封确认邮箱 4 点击确认邮箱中的链接 完成注册 我这里就采用163邮箱注册。 邮箱协议有 pop3 和 imap 和 smtp 我试了pop3 不能够筛选邮件 例如筛选未读 和 发件人这2个条件 所以放弃用pop3 imap协议是支持的。 我就找了一个开源的第三方lib:S22.Imap 用法很简单: public void Test163() { var imapServer = "imap.163.com"; var port = 993; using (ImapClient client = new ImapClient(imapServer, port, "xxxx@163.com", "pwd", AuthMethod.Login, true)) { // Returns a collection of identifiers of all mails matching the specified search criteria. IEnumerable<uint> uids = client.Search(SearchCondition.Unseen()); // Download mail messages from the default mailbox. IEnumerable<MailMessage> messages = client.GetMessages(uids,FetchOptions.HtmlOnly); Console.WriteLine("We are connected!"); } } 发现 在login的时候 报错了: 提示“NO Select Unsafe Login. Please contact kefu@188.com for help”。 163邮箱也会收到一个告警邮件 经过查证 发现得需要在发送 login 命令之前 得先发送 id 命令 至于为什么要这么做 我的理解是得先伪装成普通的客户端吧(有理解错误请指出谢谢) 我fork了一份SS2.imap的代码 打算兼容163的这个特殊情况改掉源码 然后走Login方法就不会报错了 Github地址:https://github.com/yuzd/S22.Imap 如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,转载文章之后须在文章页面明显位置给出作者和原文连接,谢谢。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册