【问题标题】:Invoke Static Method of a .NET Generic Class in MATLAB?在 MATLAB 中调用 .NET 泛型类的静态方法?
【发布时间】:2018-08-13 23:51:32
【问题描述】:

如何在 MATLAB 中调用 .NET 泛型类的静态方法?

例如,我将如何调用如下所示的静态方法Create

public class A<T> {

    internal A() {      
    }

    public static A<T> Create() {
        return new A<T>();
    }
}

http://www.mathworks.com/help/techdoc/matlab_external/brz16z_-1.html 讲的是调用泛型类的静态泛型方法,但没有说明如何调用泛型类的静态非泛型方法。

【问题讨论】:

    标签: c# .net matlab generics


    【解决方案1】:

    所以在你拥有的那个链接上,它说:

    调用泛型类的泛型函数 如果泛型方法使用与泛型类相同的参数化类型,则可以直接在类对象上调用该函数。如果泛型使用与类不同的类型,请使用 NET.invokeGenericMethod 函数。

    看来你应该可以做到:

    genClsDef = NET.GenericClass('A','System.Double');
    ret = NET.invokeGenericMethod(genClsDef,'A','System.Double');
    

    【讨论】:

    • NET.GenericClass 返回一个 NET.GenericClass,它不暴露泛型类的方法。
    • @mark - 是的,我认为可能是这样。我删除了直接调用并添加了调用调用
    • NET.invokeGenericMethod 也不起作用。这不是通用方法。
    • 这可能会有所帮助,它使用 COM 接口 Using C# functions and forms in Matlab
    • 谢谢。我当然希望这不是唯一的方法。
    【解决方案2】:

    以下代码应该可以调用通用非静态类的静态方法:

    c = NET.createGeneric('A',{'System.Double'});
    d = c.Create()
    

    【讨论】:

      猜你喜欢
      • 2015-03-09
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 2010-09-16
      • 2012-02-10
      • 1970-01-01
      相关资源
      最近更新 更多