我想知道是否有办法强制System.Net.Dns类使用一组自定义DNS服务器来解析主机名,而不是使用与主网络连接相关联的服务器.
我怀疑这只能使用像DnDns(http://dndns.codeplex.com)这样的自定义库,但我希望这可以在.NET中完成.
我一直在玩VS2008上的Code Contracts(http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx).
它们肯定很好,并为方法中的if-then-throw检查提供了一个可靠的替代方案.
尽管如此,我一直希望他们能够满足我对非可空引用类型的强烈感受.
唉,从我所看到的情况来看似乎并非如此.
这就是我的理解:
这样的事情仍会在运行时引起问题:
MyClass a = null;
a.ToString();
我仍然必须明确地写支票,即使是以更简洁和简化的方式.
除非您使用VS Team System,否则您只能使用代码契约在运行时检查事物,在编译时没有任何好处.
这意味着当出现问题时你仍然需要处理事情.
与处理简单异常没什么不同.
即使使用VSTS,静态分析也不如在运行时完成的那样好.
这是完全可以理解的,但这仍然是该功能用于运行时使用的另一个标志.
如果我错了,请纠正我,但从我看到的情况来看,Code Contracts无法使我的生活变得更轻松,而且我的程序更加健壮,就像非可空引用类型一样.
不要误会我的意思,我不喜欢代码合同.
它们是整个框架的一个非常好的增强.
只是如果这没有填补C#通过没有非可空引用类型而离开的空白,此时我担心什么都不会.
你怎么看?
我一直在想能够做这样的事情是有用的,例如,检查空引用的参数并最终抛出异常.
这将节省一些打字,并且如果添加新参数,也将无法忘记添加检查.
目前,如果我想在我选择的解决方案中检查循环引用Architecture - Generate Dependency Graph - For Solution.然后从我打开的新选项卡中选择Layout - Analyzers - Circular References Analyzer.最后,如果我从单个程序集向下钻取并且有循环引用,我可以在图表上看到它们以红色突出显示,它们也在错误列表中显示为警告.
由于我打算在相同类的方法之间发现循环引用,因此在适度大的代码库上这非常容易出错且耗时.
我想知道是否有一种方法可以立即获取所有警告,而无需扩展节点或者可能打开父节点的突出显示,这样我就可以只查看肯定包含循环引用的汇编.
NDepend应该能够提供帮助,但我更喜欢让事情变得尽可能简单,所以我总是对采用其他工具持谨慎态度.
.net circular-dependency circular-reference visual-studio visual-studio-2012
以下是XAML文件的相关部分:
xmlns:local="clr-namespace:BindingTest"
<ListBox x:Name="myList"
ItemsSource="{Binding Source={x:Static local:MyClass.Dic},
Path=Keys,
Mode=OneWay,
UpdateSourceTrigger=Explicit}">
</ListBox>
Run Code Online (Sandbox Code Playgroud)
MyClass是一个公共静态类,Dic是一个静态公共属性,一个Dictionary.
在某一点上,我将项添加到Dictionary并希望ListBox反映更改.
这是我想要使用的代码,但它不起作用:
BindingExpression binding;
binding = myList.GetBindingExpression(ListBox.ItemsSourceProperty);
binding.UpdateTarget();
Run Code Online (Sandbox Code Playgroud)
相反,此代码有效:
myList.ItemsSource = null;
myList.ItemsSource = MyClass.dic.Keys;
Run Code Online (Sandbox Code Playgroud)
我更喜欢使用UpdateTarget,但我不能让它工作.
我究竟做错了什么?
要检查值类型是否可为空,我现在正在执行以下操作:
int? i = null;
bool isNullable = i.GetType().ToString().Contains("System.Nullable");
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方式来做到这一点?
.net ×5
c# ×5
.net-4.0 ×1
c#-4.0 ×1
data-binding ×1
dns ×1
listbox ×1
networking ×1
null ×1
nullable ×1
value-type ×1
wpf ×1