ニューアトランタのColdFusionのBlueDragon.NET実装を使用して、常温核融合タグを使用してC#.NETオブジェクトのインスタンスを作成することができます。例えば:
<cfobject name="list" type=".net" action="CREATE"
class="System.Collections.ArrayList">
ただし、ある場合には、ジェネリック型のインスタンスを作成する必要があります。これは、次のような内部タイプで機能しますSystem.Int32
。
<cfobject name="list" type=".net" action="CREATE"
class="System.Collections.Generic.List`1[[System.Int32]]">
ただし、次のように、独自のアセンブリ修飾クラスを使用する場合:
namespace Foo.Bar.Bam
{
public class MyClassName
}
これはアセンブリにコンパイルされ、次のFoo.Bar.dll
ように使用されます。
<cfobject name="list" type=".net" action="CREATE"
class="System.Collections.Generic.List`1[[Foo.Bar.Bam.MyClassName,Foo.Bar]]">
次のスタックトレースで「BlueDragonInternalServerError」で失敗します。
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エラーで失敗します。
Failed to load class, System.Collections.Generic.List`1[[Foo.Bar.Bam.MyClassName]]
を使用してジェネリック型のインスタンスを作成する方法はありますか?