這是一個相當新手的問題,但是因爲我花了一個下午的時間嘗試並且沒有任何想法,我以爲我把它發佈在Stackoverflow上。在當前上下文中找不到名稱
我正在構建一個從開源API中提取數據的程序。我仍然是初學者,所以我試着慢慢調整數據,以便以我想要的方式顯示。但是,我收到錯誤「The name'MyOptionChainsInput'在當前上下文中不存在」,並且不知道如何解決它。
我的目標是要在'contract_details'中填充一個列表,使得列表可以在其他方法中訪問(例如在Main()中,我的屬性尚未做到)。
我的代碼
using System;
using System.Collections.Generic;
using System.Text;
using Krs.Ats.IBNet;
using System.Threading;
using Krs.Ats.IBNet.Contracts;
namespace Krs.Ats.TestApp
{
public class Tester
{
List<double> optionChainStrikes = new List<double>();
List<string> optionChainExpiration = new List<string>();
// properties
public List<double> OptionChainStrikes
{
get
{
return optionChainStrikes;
}
set
{
value = optionChainStrikes;
}
}
public List<string> OptionChainExpiration
{
get
{
return optionChainExpiration;
}
set
{
value = optionChainExpiration;
}
}
public void MyOptionChainsInput(string expirationDate, double strike)
{
optionChainExpiration.Add(expirationDate);
optionChainStrikes.Add(strike);
}
}
class Program
{
static void Main(string[] args)
{
// Commented code
client.ContractDetails += contract_details;
// Because of this line, the method 'contract_details' (see below) has to be static.
// Output the info of the option chains (This works and is an option, however, is it the best way?)
Tester t = new Tester();
t.MyOptionChainOutput();
}
static void contract_details(object sender, ContractDetailsEventArgs e) // This method has to be static.
{
//Tester t = new Tester(); // This creates on each call an new Tester instances, which also deletes the list.
//t.MyOptionChainsInput(e.ContractDetails.Summary.Expiry, e.ContractDetails.Summary.Strike);
MyOptionChainsInput(e.ContractDetails.Summary.Expiry, e.ContractDetails.Summary.Strike); // this doesn't work either
}
}
}
乍一看,解決方法很簡單:
- 製作方法 'contract_details' 公開,這樣它可以訪問 'MyOptionsChainInput' 的方法,或
- 在'contract_details'中創建一個新的Tester實例,然後訪問MyOptionsChainInput。
但是,由於提供此選項數據的API接口的限制,兩個選項都是不可能的。我該如何解決這個問題?也許我甚至需要放棄測試人員並找到另一種方式?
感謝您的回覆。我試過了,但是因爲API程序爲每一行新數據調用'contract_details'方法,所以我的測試程序在每次調用時都會被重寫,導致列表永遠不會被填充。 :) – Jura25 2010-12-23 17:44:53