[Ironruby-core] problem

Nathan Stott nrstott at gmail.com
Wed Mar 18 13:57:54 EDT 2009


I'm using the hosting API.
This is the entire method:
public void Load(IWindsorContainer container, TextReader reader)
{
var runtime = Ruby.CreateRuntime();
ScriptEngine engine = Ruby.GetEngine(runtime);
var ctx = Ruby.GetExecutionContext(runtime);
ctx.DefineReadOnlyGlobalVariable("container", container);

string header =
@"require 'Castle.Windsor'
require 'Castle.MicroKernel'
require 'Castle.Core'

ComponentRegistration =
Castle::MicroKernel::Registration::ComponentRegistration
ComponentModel = Castle::Core::ComponentModel
Parameter = Castle::MicroKernel::Registration::Parameter
Component = Castle::MicroKernel::Registration::Component

def component(options)
throw :classIsRequired if !options.has_key?(:class)
 klass = options[:class].to_clr_type
 if options.has_key?(:service)
service = options[:service].to_clr_type
else
service = klass
end
 if options.has_key?(:name)
name = options[:name]
else
name = klass.class.name.underscore.lowercase
end
 model = ComponentModel.new(name, service, klass)
 if options.has_key?(:parameters)
parameters = options[:parameters]
parameters.each do |p|
model.Parameters.Add(p.key, p.value)
end
end
 $container.Register(ComponentRegistration.new(model))
end";

ScriptSource headerSource = engine.CreateScriptSourceFromString(header);
headerSource.Execute();

string containerScript = reader.ReadToEnd();
ScriptSource source = engine.CreateScriptSourceFromString(containerScript);
source.Execute();
}
}

2009/3/18 Tomas Matousek <Tomas.Matousek at microsoft.com>

>  How do you run this script? From command line (ir.exe script.rb) or do
> you use hosting API?
>
>
>
> Tomas
>
>
>
> *From:* ironruby-core-bounces at rubyforge.org [mailto:
> ironruby-core-bounces at rubyforge.org] *On Behalf Of *Nathan Stott
> *Sent:* Wednesday, March 18, 2009 8:33 AM
> *To:* ironruby-core at rubyforge.org
> *Subject:* [Ironruby-core] problem
>
>
>
> Hi all.  I have a question that probably belongs on a users mailing list
> but I could not find one.
>
>
>
> I get the following error when trying to use my IronRuby windsor
> registration script:
>
> *
> System.InvalidOperationException: can't convert Castle::Core::ComponentModel into Castle::Core::ComponentModel
> *
>
>
>
> I assume this has something to do with the fact that newing up an object in
> IronRuby isn't the same thing as newing it up in C#.
>
>
>
> Any suggestions or guidance would be appreciated.
>
>
>
> Here is the important IronRuby code:
>
>
>
> require 'Castle.Windsor'
>
> require 'Castle.MicroKernel'
>
> require 'Castle.Core'
>
>
>
> ComponentRegistration =
> Castle::MicroKernel::Registration::ComponentRegistration
>
> ComponentModel = Castle::Core::ComponentModel
>
> Parameter = Castle::MicroKernel::Registration::Parameter
>
> Component = Castle::MicroKernel::Registration::Component
>
>
>
> def component(options)
>
>             throw :classIsRequired if !options.has_key?(:class)
>
>
>
>             klass = options[:class].to_clr_type
>
>
>
>             if options.has_key?(:service)
>
>                         service = options[:service].to_clr_type
>
>             else
>
>                         service = klass
>
>             end
>
>
>
>             if options.has_key?(:name)
>
>                         name = options[:name]
>
>             else
>
>                         name = klass.class.name.underscore.lowercase
>
>             end
>
>
>
>             model = ComponentModel.new(name, service, klass)
>
>
>
>             if options.has_key?(:parameters)
>
>                         parameters = options[:parameters]
>
>                         parameters.each do |p|
>
>                                     model.Parameters.Add(p.key, p.value)
>
>                         end
>
>             end
>
>
>
>             $container.Register(ComponentRegistration.new(model))
>
> end
>
>
>
>
>
> _______________________________________________
> Ironruby-core mailing list
> Ironruby-core at rubyforge.org
> http://rubyforge.org/mailman/listinfo/ironruby-core
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20090318/1caae6e5/attachment-0001.html>


More information about the Ironruby-core mailing list