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
,但我陷入了无法找到任何好的示例或文档。这是一条可行的途径吗? (我将能够解决空参数的有趣的特殊情况?)
任何人都有我可以从哪里开始的例子吗?
当我在我的dsl中遇到一个新的操作符时,我想用类名称的键来解析DslScriptObject,并给出参数。在解决中间的某个地方,根据给定的参数找到正确的构造函数并实例化我的对象。 – Cine 2010-07-02 13:09:21
因此,您基本上需要将'DslParamAttribute'的值映射为像“uri”这样的实际名称的.ctor参数的实际名称,如“uristring”,这是否正确? – 2010-07-02 13:42:48
是的,并找到正确的功能(虽然这部分是不是真的需要城堡做的事情,除了给我所有ConstructorInfo或类似的决定) – Cine 2010-07-02 13:56:18