Tag: c ++

使用reflection从属性Name获取lambda表达式

我想让用户选择不同属性的搜索。 例如 [输入文本] | [选择选项{ID,NAME,PHONE}] | [搜索] 然后我会像这样构建我的查询: repository.Where(lambda-expression) 从所选选项{ID,NAME,PHONE}构建lambda表达式(例如:x => x.NAME.Equals(INPUT TEXT)) 有没有办法从Property属性名称构建lambda,也许使用reflection? 谢谢

长度/计数的有符号与无符号整数

为了表示长度或计数变量,使用有符号或无符号整数是否更好? 在我看来,C ++ STL倾向于选择无符号 ( std::size_t ,就像在std :: vector :: size()中一样 ,而C# BCL往往更喜欢有符号整数(比如在ICollection.Count中) 。 考虑到长度或计数是非负整数,我的直觉会选择无符号 ; 但我不明白为什么.NET设计者选择了有符号整数。 什么是最好的方法? 每个人的利弊是什么?

如何在entity framework中使用String属性作为主键

我是EF的新手,尝试通过ETF6.0中的代码优先方法完成我的第一步,现在我遇到了问题。 我有一个房产 [Key] public string FooId { get; set; } 这是我的模型的主要关键。 但如果我跑了 PM>更新 – 数据库 包管理器控制台中的命令更新到数据库的挂起迁移我收到以下错误: 标识列’FooId’必须是数据类型int,bigint,smallint,tinyint或十进制或数字,标度为0,并且约束为不可空。 如果我将模型中的PK更改为 [Key] public int FooId { get; set; } 一切正常。 但我需要PK为类型字符串,因为它在我的情况下绝对敏感。 我知道有缺点,但对我来说这是必要的。 我在这里看到一篇较旧的post如何将字符串作为entity framework中的主键! 。 但似乎没有解决我的问题,或者我只是不理解它。 我真的不能在SQL数据库中使用字符串作为PK吗? 或者有办法做到这一点?

如何在C#应用程序中使用DllExport C ++类

我创建了一个包含类“myCppClass”的C ++ Dll项目,并尝试使用以下代码将其导出:如下所述: http : //msdn.microsoft.com/en-us/library/a90k134d( v = vs。 80)的.aspx class __declspec(dllexport) CExampleExport : //public CObject { … class definition … }; 我省略了“public CObject”,因为它需要afx.h并暗示它是一个MFC Dll。 我不确定这是否是好事但它与DLL项目默认设置不同。 从上面链接的文档中我可以相信所有“公共函数和成员变量”都可以导入。 我如何在C#中实现这一目标? 可以简单地实例化该类吗? 编辑:我刚刚意识到post的标题可能会产生误导。 重点应该是来自C#的DllImporting,并确保我在C ++中正确地遵循了文档

DataGridView没有列

这是c#windows表单。 我有一个数据网格视图,应该显示两列,文件名和修改日期。 我这样做的方式是通过一项任务。 我还有一个只包含文件和路径名,bindingsource和数据网格视图的类。 此任务运行一个传递类的方法。 一旦任务完成,该类应该有一个网格视图,然后我可以在窗体上设置为gridview。 这个类看起来像这样: class GetLogFilesParameters { public string FileNameandPath; public BindingSource BindingSource; public DataGridView GridView; public GetLogFilesParameters(string _fileNameAndPath) { FileNameandPath = _fileNameAndPath; BindingSource = new BindingSource(); GridView = new DataGridView(); GridView.DataSource = BindingSource; } } 我的任务调用的方法如下所示: private static void GetLogFilesTest(GetLogFilesParameters FormFields) { Cursor.Current = Cursors.WaitCursor; try { //Setup data table DataTable […]

C#数据连接最佳实践?

好的,所以这是那种自以为是的主题之一,但根据您的知识,意见和当前实践,设置以下方案的最佳方法是什么? 我正在构建一个广泛的数据输入应用程序,而且我的意思是我只有基本设置,其中包含大约15-25%的整体程序,我有大约15个部分设置的表单。 (他们仍然需要工作)我使用SQL Compact 4.0作为我的后端数据库,我不需要更广泛的数据库,因为我没有存储MMO的数据,目前这只是一个本地应用程序。 我希望能够将其设置为显示为单个窗口,只是根据菜单系统更改为各种不同的页面,但我似乎无法找到关于如何实现的良好教程,所以如果有谁知道,请赐教。 然而,问题是如何连接到数据库。 我正在使用2个SQLCE数据库,一个存储基于服务和人员的常量数据,另一个存储基于第一个数据库输入的不断变化的数据或新数据。 我已经看到了许多不同的方法来设置它,目前我正在使用一个我有一个所有其他formsinheritance的BaseForm。 在BaseForm中,我有许多表单共有的方法和变量,从而最大限度地减少了重复的代码量。 这包括两个数据库的连接字符串,以及打开与其中任何一个数据库的连接的2个方法。 像这样: internal SqlCeConnection dataConn = new SqlCeConnection(@”Data Source = |DataDirectory|\opi_data.sdf”); internal SqlCeConnection logConn = new SqlCeConnection(@”Data Source = |DataDirectory|\opi_logs.sdf”); internal SqlCeCommand command; internal void openDataConnection() // Opens a connection to the data tables { try { if(dataConn.State == ConnectionState.Closed) dataConn.Open(); } catch(SqlCeException ex) { […]

拦截来自客户端的Web服务的SOAP消息

我有一个与Web服务通信的客户端。 我与之通信的类是通过wsdl.exe生成的C#类。 我现在想记录所有传入和传出的消息。 到目前为止我所做的是编写一个inheritance自动生成的C#类的类,并重写了GetReaderForMessage方法。 这样我可以或多或少地像这样访问传入的消息: protected override XmlReader GetReaderForMessage(SoapClientMessage message, int bufferSize) { System.Xml.XmlReader aReader = base.GetReaderForMessage(message, bufferSize); System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); doc.Load(aReader); string content = doc.InnerXml.ToString(); System.Xml.XmlReader aReader2 = System.Xml.XmlReader.Create(new System.IO.StringReader(content)); return aReader2; } 显然我对这个解决方案不太满意,因为基本上我正在创建两个xml读者。 一个用于读取SOAP消息的内容,另一个用于返回方法调用方。 另外,我不能用GetWriterForMessage方法做同样的事情。 但可能我只是做起来太困难了。 例如,是否可以直接读取SoapClientMessage对象的内容? 我已经阅读了一些文章,建议我应该在这里使用SoapExtensions,但是从我能理解的情况来看,这只有在我创建的’客户端’本身就是一个Web服务时才会起作用,在这种情况下它不是。 有什么建议?

使用SimpleInjector和SignalR

我认为使用我自己的IoC对SignalR非常简单,也许是; 我很可能做错了什么。 这是我到目前为止的代码: private static void InitializeContainer(Container container) { container.Register<IMongoHelper, MongoHelper>(); // … registrations like about and then: var resolver = new SimpleInjectorResolver(container); GlobalHost.DependencyResolver = resolver; } 然后我的class级: public class SimpleInjectorResolver : DefaultDependencyResolver { private Container _container; public SimpleInjectorResolver(Container container) { _container = container; } public override object GetService(Type serviceType) { return _container.GetInstance(serviceType) ?? base.GetService(serviceType); […]

如何从C#调用C ++代码

我有C ++代码。 该代码包含Windows移动GPS启用/禁用function。 我想从C#代码调用该方法,这意味着当用户单击按钮时,C#代码应调用C ++代码。 这是用于启用GPSfunction的C ++代码: #include “cppdll.h” void Adder::add() { // TODO: Add your control notification handler code here HANDLE hDrv = CreateFile(TEXT(“FNC1:”), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (0 == DeviceIoControl(hDrv, IOCTL_WID_GPS_ON, NULL, 0, NULL, 0, NULL, NULL)) { RETAILMSG(1, (L”IOCTL_WID_RFID_ON Failed !! \r\n”)); return; } CloseHandle(hDrv); return (x+y); […]

是否有可能从Windows 8商店应用程序(C#)启动另一个应用程序或程序

我想从我的Windowsapp store应用程序启动另一个应用程序或程序。 例如我的应用程序正在显示电子邮件,因此如果有人点击这样的电子邮件,Outlook应该打开。 这可能在“App-Sandbox”中吗?