Tag: c ++

从asp.net代码后面的文件中注入Javascript

我正确地注射了这个吗? string myScriptName = “EventScriptBlock”; string myScript = string.Empty; //Verify script isn’t already registered if (!ClientScript.IsClientScriptBlockRegistered(myScriptName)) { Response.Write(‘b’); myScript = “\n\n”; myScript += “alert(‘hi’);”; myScript += “\n\n “; ClientScript.RegisterClientScriptBlock(this.GetType(), myScriptName, myScript); } 这是在我的Page_Load ,但我从未看到警报,也没有JavaScript错误。

“无法在dll中找到名为的入口点”(c ++到c#类型转换)

我有一个来自第三方的dll,它是用C ++编写的。 以下是来自dll文档的一些信息: //start documentation RECO_DATA{ wchar_t Surname[200]; wchar_t Firstname[200]; } 描述:用于接收function结果的数据结构。 所有function结果将存储为Unicode(UTF-8)。 方法: bool recoCHN_P_Name(char *imgPath,RECO_DATA *o_data); 输入: char * imgPath 此function识别的图像位置的完整路径 RECO_DATA * o_data 用于接收function结果的数据对象。 函数返回:如果成功则返回true,否则返回false。 //end documentation 我试图从我的C#应用​​程序调用recoCHN_P_Name。 为此,我想出了这段代码: 导入dll的代码: public class cnOCRsdk { [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct RECO_DATA{ [MarshalAs(UnmanagedType.ByValTStr, SizeConst=200)] public string FirstName; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)] public string […]

Chrome Style C#应用程序?

我不是在谈论远景玻璃function,我已经知道如何实现这一目标。 我正在谈论的function是向标题栏添加控件,就像Office 2007对标识和工具栏一样。

时区战略

我正在构建一个MVC 3应用程序,其中用户可能不在同一时区,因此我的意图是以UTC格式存储所有内容,并在视图中将UTC转换为本地时间,并在提交时将本地时间转换为UTC。 做一些浏览虽然似乎没有很多好的解决方案。 说实话,我有点期望一个属性可用于将UTC时间自动转换为本地时间,但似乎不存在。 我觉得只是努力将每个输入手动转换为UTC并手动将每个视图转换为本地时间显示将非常容易出错并导致难以检测到时间未转换为或未转换的错误。 关于如何将此作为一般战略处理的任何建议? 编辑每个人似乎都非常坚持“如何获得客户端时区”这篇文章,正如我在其中一条评论中提到的那样,并不是我关注的问题。 我很好用一个用户设置确定他们的时区,所以假设我已经知道客户端时区是什么…这不能解决我的问题。 现在,在我渲染日期的每个视图上,我需要调用一个方法从utc在本地时区渲染它。 每次我向服务器发送提交日期时,我都需要将其从本地时区转换为UTC。 如果我忘记这样做会有问题…提交的日期将是错误的或客户端报告和filter将是错误的。 我希望存在的是一种更自动化的方法,特别是因为视图模型在MVC 3中是强类型的,我希望sum magic能够至少自动在时区中呈现,如果不处理提交,就像日期格式或范围可以由属性控制。 所以喜欢 [DateRange] Public DateTime MyDate 我可以有类似的东西 [ConvertToUTC(offset)] Public DateTime MyDate 无论如何,我想我的唯一方法就是编写自定义数据注释以在时区中呈现它,并在MVC 3模型绑定器上覆盖,以便转换传入日期,除非我想在方法中包装任何日期呼叫。 因此,除非有人有进一步的意见或建议,否则它将是这两个选项中的一个,我只是惊讶于已经不存在的事情。 如果我确实实施了解决方案,我一定会发布它。 编辑2像这样的http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx用于MVC 3视图和视图模型是我正在寻找的。 最终编辑我将epignosisx的答案标记为正确,但也有一些评论要添加。 我在这里找到了类似的东西: http : //dalldorf.com/blog/2011/06/mvc3-timezones-1/通过将时区放在cookie中为第2部分中需要的人提供时区的实现(链接如下,因为文章第一部分到第2部分的链接不起作用) http://dalldorf.com/blog/2011/09/mvc3-timezones-2/ 重要的是要注意这些方法,你必须使用Editfor和Displayfor而不是TextForFor之类的东西,因为只有EditFor和DisplayFor使用元数据提供程序来告诉MVC如何在模型上显示该类型的属性。 如果直接在视图中访问模型值(@ Model.MyDate),则不会进行转换。

将C ++数组返回给C#

我似乎无法弄清楚如何将数组从导出的C ++ DLL返回到我的C#程序。 我从google搜索中发现的唯一一件事就是使用Marshal.Copy()将数组复制到缓冲区中,但这并没有给我我想要返回的值,我不知道它给了我什么。 这是我一直在尝试的: 导出function: extern “C” __declspec(dllexport) int* Test() { int arr[] = {1,2,3,4,5}; return arr; } C#部分: [DllImport(“Dump.dll”)] public extern static int[] test(); static void Main(string[] args) { Console.WriteLine(test()[0]); Console.ReadKey(); } 我知道返回类型int []可能是错误的,因为托管/非托管差异,我只是不知道从哪里开始。 除了将字符数组返回到字符串而不是整数数组之外,我似乎无法找到答案。 我想到我使用Marshal.Copy获得的值不是我返回的值的原因是因为导出函数中的’arr’数组被删除但是我不是100%肯定,如果有人能清除它的话那太好了。

Automapper说Mapper.Map是过时的全局映射?

我在我的项目中定义了一个全局Automapper配置,允许我使用Mapper.Map(sourceObject); 在我的代码中。 (参见下面的配置。) 我更新了NuGet包,我看到Mapper.Map已经过时/折旧的消息。 我在GitHub上回到Automapper,看到这样的例子: [Test] public void Example() { var config = new MapperConfiguration(cfg => { cfg.CreateMap().FixRootDest(); cfg.CreateMap().FixRootDest(); }); config.AssertConfigurationIsValid(); var mapper = config.CreateMapper(); var subDest1 = mapper.Map(new Source1 {SomeValue = “Value1”}); var subDest2 = mapper.Map(new Source2 {SomeOtherValue = “Value2”}); subDest1.SomeValue.ShouldEqual(“Value1”); subDest2.SomeOtherValue.ShouldEqual(“Value2”); } 我是否必须在使用映射的EVERY方法中创建配置? 我目前的全局配置: namespace PublicationSystem.App_Start { public class AutoMapperConfig { public static […]

OpenGL / DirectX Hook – 与FRAPS类似

是否可以检测使用OpenGL或DirectX的应用程序与FRAPS的作用类似? (可能使用某种forms的钩子)? 我可能不需要实际绘制到窗口,我只需要知道什么过程正在进行某种forms的3D渲染。 (编辑:)如果您不熟悉它,FRAPS是一个程序,可用于在3D应用程序上绘制“每秒帧数”计数器。 FRAPS自己查找所有正在运行的3D应用程序,而无需您指定进程名称。 绘制到外部游戏的“每秒帧数”计数器的示例:

如何使用C#发送/接收SOAP请求和响应?

private static string WebServiceCall(string methodName) { WebRequest webRequest = WebRequest.Create(“http://localhost/AccountSvc/DataInquiry.asmx”); HttpWebRequest httpRequest = (HttpWebRequest)webRequest; httpRequest.Method = “POST”; httpRequest.ContentType = “text/xml; charset=utf-8”; httpRequest.Headers.Add(“SOAPAction: http://tempuri.org/” + methodName); httpRequest.ProtocolVersion = HttpVersion.Version11; httpRequest.Credentials = CredentialCache.DefaultCredentials; Stream requestStream = httpRequest.GetRequestStream(); //Create Stream and Complete Request StreamWriter streamWriter = new StreamWriter(requestStream, Encoding.ASCII); StringBuilder soapRequest = new StringBuilder(“”); soapRequest.Append(“Sam”); soapRequest.Append(“”); streamWriter.Write(soapRequest.ToString()); streamWriter.Close(); […]

如何从我的代码中运行NUnit

我想使用NUnit在我的插件中运行unit testing,但它需要在我的应用程序的上下文中运行。 为了解决这个问题,我试图开发一个运行NUnit的插件,然后NUnit将在应用程序的上下文中执行我的测试。 我没有找到关于这个主题的具体文档,所以我在这里和那里挖了一条信息,然后我得到了下面的一段代码(类似于我在StackOverflow中找到的代码): public static void Main() { SimpleTestRunner runner = new SimpleTestRunner(); TestPackage package = new TestPackage( “Test” ); string loc = Assembly.GetExecutingAssembly().Location package.Assemblies.Add( loc ); if( runner.Load(package) ) { TestResult result = runner.Run( new NullListener() ); } } 结果变量说“没有TestFixture”,虽然我知道它确实存在。 实际上我的测试文件包含两个测试。 使用我发现的另一种方法,通过以下代码总结: TestSuiteBuilder builder = new TestSuiteBuilder(); TestSuite testSuite = builder.Build( package ); […]

使用DynamicProxy拦截对异步方法的调用

下面是实现Castle动态代理库的IInterceptor的自定义类型上的Intercept方法的代码。 此代码段来自此处发布的基于AOP的日志记录概念validation控制台应用程序。 public void Intercept(IInvocation invocation) { if (Log.IsDebugEnabled) Log.Debug(CreateInvocationLogString(“Called”, invocation)); try { invocation.Proceed(); if (Log.IsDebugEnabled) if (invocation.Method.ReturnType != typeof(void)) Log.Debug(“Returning with: ” + invocation.ReturnValue); } catch (Exception ex) { if (Log.IsErrorEnabled) Log.Error(CreateInvocationLogString(“ERROR”, invocation), ex); throw; } } 这在常规方法调用中按预期工作,但在使用async方法(使用C#5.0中的async/await关键字)尝试时则不行。 我相信,我也理解这背后的原因。 为了使async/await工作,编译器将方法的function体添加到幕后的状态机中,一旦遇到无法同步完成的第一个awaitable表达式,控件将返回给调用者。 此外,我们可以询问返回类型并确定我们是否正在处理这样的async方法: if (invocation.Method.ReturnType == typeof(Task) || (invocation.Method.ReturnType.IsGenericType && invocation.Method.ReturnType.GetGenericTypeDefinition() == typeof(Task))) Log.Info(“Asynchronous method found…”); […]