【问题标题】:Dynamics AX 2012: Dynamically create a classDynamics AX 2012:动态创建类
【发布时间】:2013-04-10 20:38:44
【问题描述】:

是否可以编写一个在 AOT 中动态创建新类对象和/或方法的 x++(或 C# CLR)方法?

makeCustomClass(string className)
{
    //create new class with name className;
    //populate methods into that class;
}

我什至不确定从哪里开始,所以一些示例代码会很有帮助。

【问题讨论】:

标签: c# clr axapta x++ dynamics-ax-2012


【解决方案1】:

解决办法如下:

static void MakeClass(Args _args)
{
    ClassBuild  classBuild;
    DictClass   dictClass;
    ;
    classBuild = new ClassBuild("TRN_ClassBuild", false);
    classBuild.addMethod("test",
        @"void test()
        {
            ;
            print 'Hello';
            pause;
        }");

    classBuild.addMethod("test2", 'void test2()\n{\n}');
    classBuild.addSourceToMethod("test2", @"
        str testVar;
        ;
        testVar = 'TRN_ClassBuild';
        info('We created a Class ' + testVar + ' and can use its methods.');
        TreeNode::findNode('Classes\\'+TestVar).AotNewWindow();");

    classBuild.classNode().AOTcompile();

    box::info(strFmt("Creating class %1 with 2 methods. Code of method test2:\n\n%2", classBuild.name(),
        classBuild.getMethodImplementation("test2", false).AOTgetSource()));

    dictClass = new DictClass(className2Id(classBuild.name()));
    dictClass.callObject('test2', dictClass.makeObject());
}

从以下文章中抄袭,然后提升到 AX 2012 R2 中工作。 http://kashperuk.blogspot.com/2006/11/today-i-want-to-write-about-using-class.html

【讨论】:

    【解决方案2】:

    您在 Product Builder 类(PBA 前缀)上有很好的示例,因为 PB 在编译过程中为模型创建了一些类。

    【讨论】:

    • 谢谢。我去看看。
    • 还可以查看 XppSource 类。您可以使用一些“sn-ps”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多