Tag: ruby

创建一个简单的c#dll并从ruby访问它

我正在尝试制作我的第一个c#dll。 我希望能够通过win32API从ruby中调用它的方法/函数。 我做了这个dll: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ClassLibrary1 { public class Class1 { public int PropA = 10; public void Multiply(Int32 myFactor) { PropA *= myFactor; } } } 我用Visual Studio 2010编译它并得到了我的ClassLibrary1.dll文件。 现在对于ruby部分,我试过这个: f = “c:/path_to_file/ClassLibrary1.dll” mult = Win32API.new(f,”Multiply”,[“I”],”I”) 但是,我收到以下错误: Error: #<RuntimeError: (eval):0:in `initialize': GetProcAddress: Multiply or MultiplyA 说实话,我从来没有创建过dll,也没有c#的经验。 我只是想开始吧。 […]

C#覆盖/向对象添加方法/字段

我有一个为我创建和设置对象的库,然后我可以使用这些对象来做东西。 假设我给了“A”类对象“a” 所以我想覆盖该特定对象中的方法,我不想更改其类的代码,因为这需要更改库。 在Ruby中我可以使用Singleton Classes来做到这一点,例如: class FirstClass def test p “test” end end o = FirstClass.new class << o def test p "overridden" end def extraMethod p "ok" end end o.test # prints "overridden" o.extraMethod 现在我怎样才能在C#中做同样的事情? 更新 我最终没有使用我提交的答案,因为它太丑了,它需要更改基类中的所有私有字段以保护或公共以使它们存在于派生类中,因此我可以将值从base复制到派生。 我最终使用的方法是将从基类派生的Type传递给库并更改库,以便它使用以下命令创建实例: (A)Activator.CreateInstance(mytype, arguments);

从.NET执行Cygwin进程?

我正在尝试从.NET应用程序启动Cygwin版本的ruby.exe,但我被卡住了。 c:\>”c:\cygwin\bin\ruby.exe” c:\test\ruby.rb /usr/bin/ruby: no such file to load — ubygems (LoadError) 如你所见,Ruby无法找到库,因为它正在寻找一些Linux风格的路径。 显然,当我从.NET运行ruby.exe时,由于找不到库,它就像上面那样失败了。 如果我没有加载任何库它可以正常工作: c:\>”c:\cygwin\bin\ruby.exe” -v ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin] 最初cygwin从这个cygwin.bat开始 chdir C:\cygwin\bin bash –login -i 我怎样才能让.NET首先进入cygwin环境然后在那个环境中执行ruby? 我不能使用Windows Ruby,我需要cygwin ruby​​。 我知道交互式驱动“bash”的潜在用法但听起来很脏,除非有很好的方法。

ERB喜欢C#的库

我希望找到一个模仿Ruby的ERB库的部分function的librray。 即在之间替换变量的文本。 我不需要ERB提供的代码执行部分,但如果你知道有这样的东西,我会非常感激。

什么是Ruby(1.8.7)类似于C#/ .NET中的SortedDictionary?

我需要在ruby(1.8.7)中按排序哈希值保存值。 哪些数据最适合?

c#序列化JSON日期为ruby

我有一个C#应用程序,它将其DTO序列化为JSON,并将它们发送给由Ruby处理的线路。 现在序列化日期的格式如下: /Date(1250170550493+0100)/ 当这击中Ruby应用程序时,我需要将此字符串表示forms转换回日期/日期时间/时间(无论它在Ruby中)。 有什么想法我会怎么做? 干杯,克里斯。

HMC SHA1哈希 – C#产生与Ruby不同的哈希输出

我正在努力为我正在使用的第三方服务快速获取一个bug .Net客户端库。 原始库(可以工作)是用Ruby编写的,但它们等效的DotNet库为Ruby库产生了不同的哈希输出。 Ruby加密代码如下: def self.encrypt_string(input_string) raise Recurly::ConfigurationError.new(“Recurly gem not configured”) unless Recurly.private_key.present? digest_key = ::Digest::SHA1.digest(Recurly.private_key) sha1_hash = ::OpenSSL::Digest::Digest.new(“sha1”) ::OpenSSL::HMAC.hexdigest(sha1_hash, digest_key, input_string.to_s) end (假设)等效的C#代码是: private static string ComputePrivateHash(string dataToProtect) { if(String.IsNullOrEmpty(Configuration.RecurlySection.Current.PrivateKey)) throw new RecurlyException(“A Private Key must be configured to use the Recurly Transparent Post API.”); byte[] salt_binary = SHA1.Create().ComputeHash(Encoding.ASCII.GetBytes(dataToProtect)); string salt_hex = BitConverter.ToString(salt_binary).Replace(“-“, “”).ToLower(); […]

为什么C#ProcessStartInfoRedirectStandardOutput会导致xcopy进程失败

这有点痛苦,因为我现在没有代码在我面前,但我会尝试解释。 我有一个简单的C#应用​​程序启动一个Ruby脚本(它做了其他一些事情,所以它生成一个批处理文件并执行它)。 我正在使用C#进程对象,并设置以下redirectstandardoutput = true redirectstandarderror = true UseShellExecute = false CreateNoWindow = true(那里有可靠的向后逻辑!) 然后我创建两个线程并为错误和输出流轮询ReadLine(),等待它们在我调用WaitForExit()之前完成。 现在,无论我做什么,当我重定向输出时,我的Ruby脚本都无法调用系统(“xcopy …”)命令(没有生成错误,它只是不复制)。 它也不会复制我要求复制的其他文件。 如果我将两个流定向到一个线程,其中一个线程只重定向其中一个线程并且只调用ReadToEnd(),就会发生这种情况。 只有将redirectstandardoutput和redirectstandarderror设置为false时,它才能正常工作。 我在这里完全失败了。 我想也许输出流正在填满,但我无法想象为什么如果我正在调用ReadLine(我需要读取行,所以我可以解析每一行,只向最终用户提供相关的)。 我还认为从线程C#进程调用dos命令可能会导致问题。 有谁知道这里可能会发生什么? 我应该说我在VS .net 2005上,我认为它是.Net Framework 2.0。

任何人都有从MSBuild调用Rake获取代码生成和其他好处的经验吗? 怎么回事? 你有什么想法/建议?

使用Visual Studio 2008在C#中编程时,我经常希望“自动”生成代码。 如果可能的话,我想通过让我的MSBuild解决方案文件调用Rake来实现它,Rake会调用Ruby代码来生成代码,生成的文件会自动出现在我的解决方案中。 这是一个商业示例(我可以命名的许多可能示例),这种自动代码生成会有所帮助。 在最近的一个项目中,我有一个包含一些包含美元金额的属性的界面。 我想要第二个接口和第三个接口,它们具有与第一个接口相同的属性,除了它们是“合格”的业务单元名称。 像这样的东西: public interface IQuarterlyResults { double TotalRevenue { get; set; } double NetProfit { get; set; } } public interface IConsumerQuarterlyResults { double ConsumerTotalRevenue { get; set; } double ConsumerNetProfit { get; set; } } public interface ICorporateQuarterResults { double CorporateTotalRevenue { get; set; } double CorporateNetProfit { […]

在C#中展平Ruby方法

如何在C#中使用Ruby方法“展平”Ruby方法 。 该方法将锯齿状arrays展平为单维arrays。 例如: s = [ 1, 2, 3 ] #=> [1, 2, 3] t = [ 4, 5, 6, [7, 8] ] #=> [4, 5, 6, [7, 8]] a = [ s, t, 9, 10 ] #=> [[1, 2, 3], [4, 5, 6, [7, 8]], 9, 10] a.flatten #=> [1, 2, 3, 4, […]