小编Kem*_*eth的帖子

"消息链"与"中间人"

我正在阅读福勒的重构书,对这两个代码气味有点困惑.

"消息链"就是这样的调用a.getB().getC().getValue().

"中间人"是一种类似的方法

class A
{
    object getCValue()
    {
        return b.getCValue();
    }
}
Run Code Online (Sandbox Code Playgroud)

我理解这两个部分的方式是,如果你有"消息链",你可以通过引入"中间人"来缩短它们.如果你有"中间人"你将它们变成"消息链"......

现在显然必须有一些限制,或者你有一个程序员的旋转木马.我应该在什么时候支持一个而不是另一个?

一个是将类耦合到不相关的类,另一个是将类耦合到结构.所以从理论上讲,我的方法是检查任何给定的变化是否会减少一种耦合,而不是增加另一种耦合.但是,一种耦合是否更糟,应该更加权衡?即如果你可以删除X结构联轴器,只需添加一个类联轴器?

refactoring

15
推荐指数
1
解决办法
3645
查看次数

如何向Android添加新的手机日历?

Android上的日历应用可以合并多个单独的日历:本地电话日历,Google日历等.

如何在Android手机中添加新的此类日历?我希望动态生成该日历中的事件,而无需访问Google等任何在线资源.

编辑:我想支持Android 1.5和2.3.4的手机.我可能有一天会得到更新到4.0的新手机,但谁知道什么时候会...

android calendar

10
推荐指数
2
解决办法
1万
查看次数

如何通过SSL从LDAP获取DirectoryEntry?

我正在尝试从LDAP获取根DirectoryEntry,以便我可以显示它的一个很好的图形树视图.

这一切在正常连接下都能很好地工作,但我无法使用SSL.

var root = this.checkBoxSSL.Checked
                    ? new DirectoryEntry("LDAP://" + this.textBoxServer.Text,
                        this.textBoxUsername.Text,
                        this.textBoxPassword.Text,
                        AuthenticationTypes.SecureSocketsLayer)
                    : new DirectoryEntry("LDAP://" + this.textBoxServer.Text,
                        this.textBoxUsername.Text,
                        this.textBoxPassword.Text);
var dn = root.Properties["distinguishedName"].Value;
Run Code Online (Sandbox Code Playgroud)

等等...

但我得到一个"服务器无法运行"的例外.这一切似乎都归结为绑定过程.基于互联网研究,它可能是证书和/或身份验证方法(NTLM等)的问题.

那么如何才能通过SSL获得有效的DirectoryEntry?

我愿意接受替代解决方案,只要我可以检索所需节点的所有LDAP属性.(Root,DC,OU,CN,组和用户)

编辑:因为它似乎问题归结为SSL证书.我们只有一个自签名证书atm.而且这似乎被.NET默认拒绝.我们稍后会尝试使用正确签名的证书,但我可能需要能够处理自签名证书.

这是我对证书的了解有限的地方.我正在探索一种不同的代码解决方案,因为它似乎是唯一允许我影响整个证书处理的解决方案:

System.Security.Cryptography.X509Certificates.X509Certificate2 cert = new System.Security.Cryptography.X509Certificates.X509Certificate2();
cert.Import("..\\..\\test certificate.cer");

LdapConnection con = new LdapConnection("ip:636");
con.Credential = new NetworkCredential("un", "pw");
con.AuthType = AuthType.Ntlm;
con.SessionOptions.SecureSocketLayer = true;
con.SessionOptions.VerifyServerCertificate = new VerifyServerCertificateCallback((ldapcon, cer) => {
    var cer2 = new System.Security.Cryptography.X509Certificates.X509Certificate2(cer);

    StringBuilder strb = new StringBuilder();

    strb.AppendFormat("{0} {1} matches: {2}\n", "Subject", cert.Subject, cert.Subject.Equals(cer2.Subject));
    strb.AppendFormat("{0} …
Run Code Online (Sandbox Code Playgroud)

c# ssl active-directory

6
推荐指数
3
解决办法
2万
查看次数

C#模拟框架 - 简单,信息异常

到目前为止,我一直在使用NUnit.Mocks来隔离我的课程,但是由于缺乏给我的反馈,我感到很恼火.所以我一直在寻找替代方案,但无处可去.

犀牛嘲笑:无法理解.一切都必须以完全不同的模糊方式完成,使测试代码几乎不可读.

Moq:无法弄清楚如何模拟属性getter.有样品,但我尝试时它们不起作用.

从我收集的内容来看,这些似乎是最受欢迎的.在我去尝试每一个之前,我想请大家提一下建议......

我在找什么:

  • 设计简单.我不想记住100个不同的陈述以及使用哪个陈述取决于我的方法是否具有返回值,我的属性是否同时具有吸气剂和设置者,或者只是其中之一,是否是满月等等...
  • 精心制作的反馈.如果我的测试失败,我想知道什么方法调用缺失或太多.我想知道哪个调用有错误的参数.等等...

我的背景是C#2.0.我仍然非常熟悉新版.NET中的概念.因此,不需要这些东西的框架将是一个奖励.

谢谢.

编辑:我终于弄清楚为什么我的Moq测试不起作用.它与Moq无关,我现在正在进一步评估它.到目前为止看起来非常好......

.net mocking

0
推荐指数
1
解决办法
2671
查看次数

标签 统计

.net ×1

active-directory ×1

android ×1

c# ×1

calendar ×1

mocking ×1

refactoring ×1

ssl ×1