Attributes


#1

I’d like to mock up a WCF service using IronRuby.

This presents some stumbling blocks however, in that WCF
ServiceContracts
are defined by creating an Interface and then applying attributes to it.

Interface ~= Module in IronRuby, so that would probably be fine, but how
can
I apply attributes to the module and the methods it declares?


#2

AFAIK you can’t yet. It’s one of those interop things that are on the
back
burner while language compatibility is worked on. There’s still alot of
discussion needed about how to do this…


#3

We currently don’t support attributes. As a workaround you can define a
class in C# that will have all the attributes. The class can then
forward all functionality to Ruby (e.g. via abstract methods implemented
in a class derived in Ruby).

Tomas

From: removed_email_address@domain.invalid
[mailto:removed_email_address@domain.invalid] On Behalf Of Orion E.
Sent: Wednesday, February 18, 2009 4:20 PM
To: removed_email_address@domain.invalid
Subject: [Ironruby-core] Attributes

I’d like to mock up a WCF service using IronRuby.

This presents some stumbling blocks however, in that WCF
ServiceContracts are defined by creating an Interface and then applying
attributes to it.

Interface ~= Module in IronRuby, so that would probably be fine, but how
can I apply attributes to the module and the methods it declares?


#4

Fair enough:
Here’s my thoughts on what such a thing might look like:

module IMyService
clr_attribute ServiceContractAttribute.new(“blah”)

clr_attribute OperationContractAttribute.new, :on => "SomeMethod"
def SomeMethod; end

end

Could also have similar methods which map from string to ClassName at
runtime

clr_attr “ServiceContract”
clr_attr “OperationContract”, :on => “SomeMethod”

Could also implement named parameters eg

clr_attr “ServiceContract”, :name => “MyFancyContract”
clr_attr “OperationContract”, :name => “CoolOperation”, :on =>
“SomeMethod”

Hope this helps inspire :slight_smile:

On Thu, Feb 19, 2009 at 2:01 PM, Michael L. <


#5

Thanks for answering that. I wrote a small C# interface and then
implemented
that from IronRuby

On Thu, Feb 19, 2009 at 1:54 PM, Tomas M. <


#6

We think in similar directions.

Tomas

From: removed_email_address@domain.invalid
[mailto:removed_email_address@domain.invalid] On Behalf Of Orion E.
Sent: Wednesday, February 18, 2009 5:18 PM
To: removed_email_address@domain.invalid
Subject: Re: [Ironruby-core] Attributes

Fair enough:
Here’s my thoughts on what such a thing might look like:

module IMyService
clr_attribute ServiceContractAttribute.new(“blah”)

clr_attribute OperationContractAttribute.new, :on => "SomeMethod"
def SomeMethod; end

end

Could also have similar methods which map from string to ClassName at
runtime

clr_attr “ServiceContract”
clr_attr “OperationContract”, :on => “SomeMethod”

Could also implement named parameters eg

clr_attr “ServiceContract”, :name => “MyFancyContract”
clr_attr “OperationContract”, :name => “CoolOperation”, :on =>
“SomeMethod”

Hope this helps inspire :slight_smile:

On Thu, Feb 19, 2009 at 2:01 PM, Michael L.
<removed_email_address@domain.invalidmailto:removed_email_address@domain.invalid> wrote:
AFAIK you can’t yet. It’s one of those interop things that are on the
back burner while language compatibility is worked on. There’s still
alot of discussion needed about how to do this…
On Wed, Feb 18, 2009 at 7:20 PM, Orion E.
<removed_email_address@domain.invalidmailto:removed_email_address@domain.invalid> wrote:
I’d like to mock up a WCF service using IronRuby.

This presents some stumbling blocks however, in that WCF
ServiceContracts are defined by creating an Interface and then applying
attributes to it.

Interface ~= Module in IronRuby, so that would probably be fine, but how
can I apply attributes to the module and the methods it declares?


Ironruby-core mailing list
removed_email_address@domain.invalidmailto:removed_email_address@domain.invalid
http://rubyforge.org/mailman/listinfo/ironruby-core


Michael L.
IronRuby MVP
http://blog.prokrams.com