接口对象始终为空

时间:2015-04-10 04:40:33

标签: c# asp.net interface nullreferenceexception

我从“PersonFuntionality”界面创建了“personFuntionality”对象。 该接口有一个保存人员详细信息的方法。问题是personFuntionality总是有一个空值。

public PersonFuntionality personFuntionality;



 try
            {
                List<beans.Person> prsn = new List<beans.Person>();

                beans.Person psn = new beans.Person();

                psn.PersonId = Convert.ToInt32(txtId.Text.Trim());
                psn.PersonName = txtName.Text.Trim();
                psn.PersonCity = txtCity.Text.Trim();

                prsn.Add(psn);

                //prsn.PersonId = Convert.ToInt32(txtId.Text.Trim());
                //prsn.PersonName = txtName.Text.Trim();
                //prsn.PersonCity = txtCity.Text.Trim();

                if (personFuntionality != null)
                {
                    bool success = personFuntionality.SavePersonDetails(prsn);

                    if (success == true)
                    {
                        lblResult.Text = "success";
                    }
                    else
                    {
                        lblResult.Text = "Failed";
                    }
                }
                else
                {
                    lblResult.Text = "Object Null";
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

1 个答案:

答案 0 :(得分:5)

您从未在代码中实例化personFuntionality对象,只是声明了它。您可以将其实例化为。我假设您为实现 PersonFuntionality 接口的类PersonFuntionalityImlementorClass提供了参数较少的构造函数。

public PersonFuntionality personFuntionality = new  PersonFuntionalityImlementorClass();

您有界面参考personFuntionality。您必须为其分配一个实现者类对象。

Interface

  

接口只包含方法,属性的签名,   事件或索引器。实现接口的类或结构   必须实现在。中指定的接口的成员   界面定义。在以下示例中,类   ImplementationClass必须实现一个名为SampleMethod的方法   没有参数并返回void。

interface ISampleInterface
{
    void SampleMethod();
}

class ImplementationClass : ISampleInterface
{
    // Explicit interface member implementation:  
    void ISampleInterface.SampleMethod()
    {
        // Method implementation.
    }

    static void Main()
    {
        // Declare an interface instance.
        ISampleInterface obj = new ImplementationClass();

        // Call the member.
        obj.SampleMethod();
    }
}