C# 不会显示.net对象的属性和方法
我有.NET汇编文件,我需要它在MATLAB中工作。(库是用C#创建的,我有相应的源代码) 接下来,我发现以下命令将在MATLAB中加载程序集,并使其类可在“MATLAB”中使用。但它似乎不起作用。我用这个来加载文件:C# 不会显示.net对象的属性和方法,c#,.net,matlab,.net-assembly,matlab-deployment,C#,.net,Matlab,.net Assembly,Matlab Deployment,我有.NET汇编文件,我需要它在MATLAB中工作。(库是用C#创建的,我有相应的源代码) 接下来,我发现以下命令将在MATLAB中加载程序集,并使其类可在“MATLAB”中使用。但它似乎不起作用。我用这个来加载文件: color = NET.addAssembly('c:\path\to\file\EvolutionMapsClassLib.dll'); 它加载得很好,我在工作区中看到一个1x1.NET程序集对象。。当我键入color时,我得到以下结果: color =
color = NET.addAssembly('c:\path\to\file\EvolutionMapsClassLib.dll');
它加载得很好,我在工作区中看到一个1x1.NET程序集对象。。当我键入color
时,我得到以下结果:
color =
NET.Assembly handle
Package: NET
Properties for class NET.Assembly:
AssemblyHandle
Classes
Structures
Enums
GenericTypes
Interfaces
Delegates
显然,它已正确加载,此外,键入color.Classes
可提供以下内容:
>> color.Classes
ans =
'EvolutionMaps.EvolutionMap'
'EvolutionMaps.EvolutionMap+EstimationResults'
'EvolutionMaps.PrincipalDirectionEvolutionMap'
'EvolutionMaps.CharacterDimensionsEstemator'
'EvolutionMaps.MapBlob'
'EvolutionMaps.MapsMetric'
'EvolutionMaps.MapsMetric+MapMinimalComparable'
'EvolutionMaps.MapsL2Distance'
'EvolutionMaps.DiagonalEvolutionMap'
'EvolutionMaps.EvolutionMapGenerator'
'EvolutionMaps.HeightEvolutionMap'
'EvolutionMaps.FullnessEvolutionMap'
'EvolutionMaps.YvalEvolutionMap'
'EvolutionMaps.ImageExtractor'
'EvolutionMaps.HorisontalProjectionDistance'
'EvolutionMaps.StrokeWidthEvolutionMap'
'EvolutionMaps.ConnectedComponentsFinder'
'EvolutionMaps.ColorMap'
'EvolutionMaps.ColorMap+GrayColorMap'
'EvolutionMaps.ColorMap+JetColorMap'
'EvolutionMaps.TransitionAvgEvolutionMap'
'EvolutionMaps.PrincipalProjectionEvolutionMap'
'EvolutionMaps.ConnectedComponent'
'EvolutionMaps.WidthEvolutionMap'
这似乎工作得很好,但根据在线帮助,为了与这些类交互,我需要知道方法和属性
这就是我遇到问题的地方,因为属性
和方法似乎都不起作用。
我尝试了每一个变体来获取属性或方法列表,但我一直遇到以下错误:
>> properties color.EvolutionMaps.ColorMap
No properties for class color.EvolutionMaps.ColorMap or no class color.EvolutionMaps.ColorMap.
>> properties color.Classes.EvolutionMaps.ColorMap
No properties for class color.Classes.EvolutionMaps.ColorMap or no class color.Classes.EvolutionMaps.ColorMap.
>> properties Classes.EvolutionMaps.ColorMap
No properties for class Classes.EvolutionMaps.ColorMap or no class Classes.EvolutionMaps.ColorMap.
>> methods color
No methods for class color or no class color.
与方法的情况相同,我不断遇到以下错误:
>> properties color.EvolutionMaps.ColorMap
No properties for class color.EvolutionMaps.ColorMap or no class color.EvolutionMaps.ColorMap.
>> properties color.Classes.EvolutionMaps.ColorMap
No properties for class color.Classes.EvolutionMaps.ColorMap or no class color.Classes.EvolutionMaps.ColorMap.
>> properties Classes.EvolutionMaps.ColorMap
No properties for class Classes.EvolutionMaps.ColorMap or no class Classes.EvolutionMaps.ColorMap.
>> methods color
No methods for class color or no class color.
当我打开这个程序集的源代码时,它显示了所有的方法和属性
那么,如何才能使.NET程序集在不显示属性或方法的情况下工作呢
谢谢该函数加载.NET程序集并使其在MATLAB中可用。返回的变量实际上是一个“元对象”,包含关于类、枚举、结构等的信息。。载于大会
如果要处理库公开的任何类,必须像往常一样实例化对象(或者直接调用静态函数(如果可用)。政府对此解释得很好
以以下C#类为例:
MyClass.cs
首先,我们将其编译成.NET程序集,然后在MATLAB中使用它:
> csc.exe /target:library /out:ClassLibraryTest.dll MyClass.cs
MATLAB
现在可以像往常一样检查类的属性和方法:
>> properties(c)
>> methods(c)
>> methodsview ClassLibraryTest.MyClass
在C代码中,属性是静态的还是非静态的?也许他们需要公开
;是吗?@JeppeStigNielsen在类中,所有变量都是私有的,但函数是公共的。如果你看到代码会有帮助吗?我不能上传到这里,因为它不是我的,但如果你想看的话,我可以发电子邮件给你。谢谢你的回复,阿姆罗,我希望你能在这里回复。我试图按照您的指示,并尝试用c=EvolutionMaps.ConnectedComponent()实例化一个类的实例代码>但是我得到了一个错误没有找到具有匹配签名的构造函数“EvolutionMaps.ConnectedComponent”。
如果查看代码会有帮助吗?我可以发电子邮件给你。感谢您对我的问题的输入。发布一个methods EvolutionMaps.ConnectedComponent-full以查看构造函数的签名。构造函数是那些命名为类的方法。