2012-07-12 36 views
3

C#命名空间System.Windows.Forms.DataVisualization.Charting.StatisticFormula似乎有一些我需要的统计函数。命名空间记录在MSDN here。我真的很想使用InverseNormalDistribution(double Z)函数。问题是构造函数是内部的,所以我无法访问我知道的函数。使用.Net的StatisticFormula库

是否有某种方法可以访问此命名空间中的静态函数,还是需要找到其他解决方案?

+0

你能证明你有什么迄今在示例问候C#代码..?我认为,一旦我们可以看到你正在使用的是什么,或者你是如何实现方法 – MethodMan 2012-07-12 19:25:48

+0

我想这样做会更有意义:var stat = new System.Windows.Forms.DataVisualization.Charting.StatisticFormula( ); Console.WriteLine(stat.InverseNormalDistribution(0.5)); //它会给我一个编译器错误。 – user1214135 2012-07-12 19:43:36

回答

3

你也许可以使用反射,这样的事情应该这样做:

var statisticFormula = 
    (StatisticFormula) typeof(StatisticFormula).GetConstructor(
     BindingFlags.NonPublic | BindingFlags.Instance, 
     null, Type.EmptyTypes, null).Invoke(null); 

但是,这可能是一个更好的办法:

var chart = new Chart(); 
var value = chart.DataManipulator.Statistics.InverseNormalDistribution(.15) 
+0

这正是我所需要的(第二部分)。谢谢。 – user1214135 2012-07-12 19:42:55

+3

可能想要添加使用到图表,即使用(var chart = new Chart()){return chart.DataM .....; }。有趣的是,这种有用的可重用代码是如何隐藏在这样一个繁琐的名称空间和API中的。 – gatapia 2013-05-13 21:55:19