2010-07-02 53 views
0

我有一个特定于域的语言,我想注册可以在其中实例化的对象。使用自定义类来解析参数

例如一个可以执行httprequests的类。

[IoC("HttpRequest", typeof(DslScriptObject), IoCAttribute.IoCLifestyleType.Transient)] 
internal class WebRequestDslObj : DslScriptObject 
{ 
    [DslNew] 
    public WebRequestDslObj() : this(null, null) 
    {} 
    [DslNew] 
    public WebRequestDslObj([DslParam("uri")]string uristring, [DslOptionalParam("contenttype")] string contenttype) : this(uristring, null) 
    {} 
} 

那么我从我的DSL数据类型映射类型和C#的数据类型(我有他们作为一个IList如果有什么差别)的一类,而这个工程确定,如果我不使用城堡来实例化目的。

但是,只要我想使用IoC来自动调整各种类型,那么我不知道如何处理构造函数。我试图看看设置CustomComponentActivator,但我陷入了无法找到任何好的示例或文档。这是一条可行的途径吗? (我将能够解决空参数的有趣的特殊情况?)

任何人都有我可以从哪里开始的例子吗?

回答

2

那么什么是你想与温莎做的,因为我不知道我看到你用它去......

如果你想影响组件如何被在温莎注册,例如重命名参数,你可以编写自定义ComponentModel construction contributor来做到这一点。

+0

当我在我的dsl中遇到一个新的操作符时,我想用类名称的键来解析DslScriptObject,并给出参数。在解决中间的某个地方,根据给定的参数找到正确的构造函数并实例化我的对象。 – Cine 2010-07-02 13:09:21

+0

因此,您基本上需要将'DslParamAttribute'的值映射为像“uri”这样的实际名称的.ctor参数的实际名称,如“uristring”,这是否正确? – 2010-07-02 13:42:48

+0

是的,并找到正确的功能(虽然这部分是不是真的需要城堡做的事情,除了给我所有ConstructorInfo或类似的决定) – Cine 2010-07-02 13:56:18

相关问题