Interactive Brokers - EWrapperImpl示例 - 未将对象引用设置为对象的实例

时间:2016-03-09 09:36:05

标签: c# interactive-brokers

为什么下面的代码在尝试使用ClientSocket时会抛出Object引用错误?

我从Interactive Brokers API文档中复制了此示例。

https://www.interactivebrokers.com/en/software/api/api.htm

我使用IB网关连接。

https://www.interactivebrokers.com/en/index.php?f=5041

我已经看过以下帖子,但目前还不清楚我在这里做错了什么。

What is a NullReferenceException, and how do I fix it?

在myClient.ClientSocket行上抛出错误:

var myClient = new EWrapperImpl();

myClient.ClientSocket.eConnect("127.0.0.1", 7496, 0);

这是包装类:

public class EWrapperImpl : EWrapper
{
    EClientSocket clientSocket;

    public EWrapperImpl()
    {
        clientSocket = new EClientSocket(this);
    }

    public EClientSocket ClientSocket { get; set; }
}

1 个答案:

答案 0 :(得分:1)

请注意,您在构造函数中初始化私有字段clientSocket(带有小写“c”),但访问公共字段或属性ClientSocket(用大写的'C')。 因此,您正在初始化一个从未使用过的字段,并尝试访问从未初始化的属性。

修复代码的最简单方法是删除私有字段并初始化属性:

public class EWrapperImpl : EWrapper
{
    public EWrapperImpl()
    {
        ClientSocket = new EClientSocket(this);
    }

    public EClientSocket ClientSocket { get; set; }
}