Tag: .net

对复合集合进行排序

因此,WPF不支持CompositeCollections视图的标准排序或过滤行为,因此解决此问题的最佳做法是什么。 有两个或更多不同类型的对象集合。 您希望将它们组合成单个可排序和可过滤的集合(必须手动实现排序或过滤)。 我考虑过的方法之一是创建一个只有少数核心属性的新对象集合,包括我希望对集合进行排序的属性,以及每种类型的对象实例。 class MyCompositeObject { enum ObjectType; DateTime CreatedDate; string SomeAttribute; myObjectType1 Obj1; myObjectType2 Obj2; { class MyCompositeObjects : List { } 然后遍历我的两个对象集合来构建新的复合集合。 显然这是一种蛮力方法,但它会起作用。 我将获得新的复合对象集合上的所有默认视图排序和过滤行为,并且我可以在其上放置数据模板以根据实际存储在该复合项目中的类型正确显示列表项目。 有什么建议以更优雅的方式做到这一点?

IP地址是否与本地计算机位于同一子网上(支持IPv6)

有没有人有一些代码可以确定IP地址(IPv4或IPv6)是否与运行应用程序的计算机位于同一子网上? 我已经看到了许多使用IPv4执行此操作的代码示例,但我找不到任何支持IPv6的代码。 编辑: 我不确定我是否理解v4和v6之间的所有差异,所以这里有一点我的问题。 我有一个为Internet客户端和Intranet客户端提供服务的应用程序,也就是说有些客户端与服务器位于同一物理网络上。 所以有时客户端之间有路由器,有时候没有路由器。 使用IPv4,我可以通过检查服务器IP地址和子网的客户端IP地址来确定这一点,所以如果我的服务器的IP和子网掩码分别是: 192.168.123.15 255.255.255.0 并且服务器从192.168.123.100接收客户端请求我知道客户端和服务器之间没有路由器。 但是,如果服务器收到来自192.168.1.100或67.7.23.4的客户端请求,我知道这些客户端和服务器之间存在路由器。 在.Net中,我可以收集客户端和服务器的IP地址(v4和v6)但我找不到IPv6子网掩码。 有没有办法在.Net中收集这些信息,还是我误解了IPv4和IPv6之间有什么区别? 编辑x2: 我在MS connect站点上发布了这个,看看它们是否正在处理,或者是否有原因他们没有将IPv6Mask属性添加到UnicastIPAddressInformation类。 https://connect.microsoft.com/VisualStudio/feedback/details/643031/unicastipaddressinformation-class-has-no-ipv6mask-property 我也在同一时间在MSDN论坛上发布了同样的问题。 1800多个观点,而不是一个回复。 猜猜我不是唯一一个对此感到好奇的人。 http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/dd30e161-9be5-4d70-97c0-22e2756ce953

用户定义的结构是否inheritance了重载的==运算符?

如果引用类型不重载等于运算符== ,则将使用Object上的内置相等运算符。 为什么用户定义的structs不一样: struct A{ } static void Main(string[] args) { A a = new A(); A a1 = new A(); bool equal= (a == a1); //error } 也就是说, ValueType (所有structs派生自哪个)也不会重载==运算符?

使用foreach循环检索GroupBox中的TextBox

我在WinForm有十个组框。 每个组框包含10个文本框,我已定义每个TextBox名称。 如何使用foreach循环获取每个文本框?

在C#中处理时间的简单方法?

我目前的做法是这样的 DateTime startHour = new DateTime(1900,1,1,12,25,43); DateTime endHour = new DateTime(1900,1,1,13,45,32); // I need to, say, know if a complete DateTime instance // is later than startHour plus 15 minutes DateTime now = DateTime.Now(); startHour = startHour.addMinutes(15); if (now.CompareTo(new DateTime(now.Year, now.Month, now.Day, startHour.Hour, startHour.Minute, startHour.Second)) > 0) { //I can do something now } 这非常麻烦甚至容易出错。 […]

致命错误C1083 – 无法打开包含文件:“windows.h”:没有这样的文件或目录

我正在尝试让IKVM构建(请参阅此问题 ),但现在遇到了与IKVM无关的问题,因此我打开了一个新问题: 使用Visual Studio 2008命令提示符(从“开始”菜单)在IKVM目录上运行nant时,出现以下错误: ikvm-native-win32: [cl] Compiling 2 files to C:\ikvm-0.36.0.11\native\Release’. [cl] jni.c [cl] os.c [cl] C:\ikvm-0.36.0.11\native\os.c(25) : fatal error C1083: Cannot open include file: ‘windows.h’: No such file or directory [cl] Generating Code… BUILD FAILED C:\ikvm-0.36.0.11\native\native.build(17,10): External Program Failed: cl (return code was 2) 我安装了Platform SDK。 我错过了什么? 我确定这很简单…… 编辑#1我刚刚检查过 – 我在路径上有包含windows.h的目录。 编辑#2找到答案(参见下面的答案):包含windows.h的目录需要在“Include”路径变量中。

System.Threading.Timer一段时间后才开火

我有一个Windows服务应用程序。 并通过在控制台模式下运行来调试它。 在这里http://support.microsoft.com/kb/842793写道,Timers.Timer有一个错误,而不是在Windows服务中触发。 解决方法是使用Threading.Timer本文适用于.NET 1.0和1.1 我使用的是.NET 4,但经过一段时间Threading.Timer也没有开火。 那可能是什么原因呢? 您能建议什么作为解决方法? 谢谢, 最好的祝福 编辑:我将计时器从Threading.Timer更改为Timers.Timer,它没有任何问题。

如何使用Autofac与方法连接事件?

是否可以通过接口/类(通过构造函数和属性注入)将事件连接到具有Autofac的方法而不是整个对象。 我想绑定在function级别而不是类型级别。 以编程方式我希望完成以下工作(在C#中): someType.Output += someOtherType.Input; 例如,Spring.net支持以下构造来实现: Autofac能够做到这一点以及如何做到这一点? 是否可以将xml配置用于此类任务?

如何实现Repository FindAll()方法?

我有以下存储库模式。 要求是“查找所有者姓名为Lijo的所有帐户”。 所以,我需要编写一个FindAll函数。 怎么写这个function? 限制是: 1)客户端“BankAccountService”不应使用“DBML_Project”中的类。 2)我们不应该使用GetAll方法来退出完整的帐户列表,然后进行过滤。 注意:我在处理多态性问题时遇到了这个问题:ORM实体是域实体还是数据实体? 码 namespace ApplicationService_Bank { public class BankAccountService { RepositoryLayer.ILijosBankRepository accountRepository = new RepositoryLayer.LijosSimpleBankRepository(); public void FreezeAllAccountsForUser(string userName) { //Should not use assembly ‘DBML_Project’. IEnumerable accountsForUserWithNameLIJO = null; //accountsForUserWithNameLIJO = accountRepository.FindAll(p => p.BankUser.Name == “Lijo”); } } } namespace RepositoryLayer { public interface ILijosBankRepository { List GetAll(); IEnumerable […]

格式化不同文化中的数字

假设文化不变 ,是否可以以格式定义不同的组分隔符 – 而不是逗号? Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; Console.WriteLine(String.Format(“{0:#,##0}”, 2295)); 输出: 2,295 期望的输出: 2.295 不变文化是一项要求,因为来自许多不同语言环境的货币都使用格式字符串格式化,这些格式字符串是用户定义的。 即丹麦他们已经将价格格式定义为“{0:0}, – ”,而对于爱尔兰,它可能是“€{0:#,## 0}”。