首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在BlueDragon.NET的ColdFusion实现中使用<cfobject>创建泛型类型的c#实例

在BlueDragon.NET的ColdFusion实现中使用<cfobject>创建泛型类型的c#实例
EN

Stack Overflow用户
提问于 2011-06-04 06:32:33
回答 1查看 608关注 0票数 1

通过使用新亚特兰大的ColdFusion的BlueDragon.NET实现,我们能够使用冷融合标签创建C# .NET对象的实例。例如:

代码语言:javascript
复制
<cfobject name="list" type=".net" action="CREATE"
 class="System.Collections.ArrayList">

然而,在一种情况下,我们需要创建一个泛型类型的实例。这适用于像System.Int32这样的内部类型:

代码语言:javascript
复制
<cfobject name="list" type=".net" action="CREATE"
 class="System.Collections.Generic.List`1[[System.Int32]]">

但是,当使用我们自己的程序集限定类时,如下所示:

代码语言:javascript
复制
namespace Foo.Bar.Bam
{
    public class MyClassName
}

它被编译成程序集Foo.Bar.dll,并像这样使用:

代码语言:javascript
复制
<cfobject name="list" type=".net" action="CREATE"
 class="System.Collections.Generic.List`1[[Foo.Bar.Bam.MyClassName,Foo.Bar]]">

它会失败,并显示"BlueDragon内部服务器错误“,并显示以下堆栈跟踪:

代码语言:javascript
复制
java.lang.ClassNotFoundException: Could not load file or assembly 'Foo.Bar]]' or one of its dependencies. The system cannot find the file specified.
   at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
   at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   at System.AppDomain.Load(String assemblyString)
   at com.nary.util.ClassUtils.forName(String className)
   at com.naryx.tagfusion.cfm.tag.cfOBJECT.render(cfSession session)
   at com.naryx.tagfusion.cfm.tag.cfTag.coreRender(cfSession _Session)
   at com.naryx.tagfusion.cfm.engine.cfSession.onRequest(cfFile requestFile)
   at com.naryx.tagfusion.cfm.engine.cfEngine.service(cfSession _Session)

如果没有程序集限定,它将失败,并显示CFML错误:

代码语言:javascript
复制
Failed to load class, System.Collections.Generic.List`1[[Foo.Bar.Bam.MyClassName]]

有没有办法用来创建泛型类型的实例?

EN

回答 1

Stack Overflow用户

发布于 2011-06-04 06:41:15

必须指定程序集(dll)的名称,而不是关键字Assembly

给定:

代码语言:javascript
复制
namespace Me
{
   public class Foo { }
}

并编译成MyStuff.Dll;这个类应该是

代码语言:javascript
复制
class="System.Collections.Generic.List`1[[Me.Foo, MyStuff]]">
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6233298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档