C# 接口对象始终为空
我从“PersonFunctionality”界面创建了“PersonFunctionality”对象。 该接口有一个保存个人详细信息的方法。问题是PersonFunctionality总是有一个空值C# 接口对象始终为空,c#,asp.net,interface,nullreferenceexception,C#,Asp.net,Interface,Nullreferenceexception,我从“PersonFunctionality”界面创建了“PersonFunctionality”对象。 该接口有一个保存个人详细信息的方法。问题是PersonFunctionality总是有一个空值 public PersonFuntionality personFuntionality; try { List<beans.Person> prsn = new List<beans.Person>();
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);
}
公共人格功能性;
尝试
{
List prsn=新列表();
beans.Person psn=新bean.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(personFunctionality!=null)
{
bool success=personFunctionality.SavePersonDetails(prsn);
if(success==true)
{
lblResult.Text=“成功”;
}
其他的
{
lblResult.Text=“失败”;
}
}
其他的
{
lblResult.Text=“对象为空”;
}
}
捕获(例外情况除外)
{
抛出新异常(例如消息);
}
您从未在give代码中实例化过PersonFunctionality
对象,只是声明了它。您可以将其实例化为。我假设您为实现PersonFunctionality接口的类PersonFunctionalityImlementClass
拥有无参数构造函数
public PersonFuntionality personFuntionality = new PersonFuntionalityImlementorClass();
您具有接口引用PersonFunctionality。您必须为其分配一个实现者类对象
接口仅包含方法、属性、,
事件或索引器。实现接口的类或结构
必须实现在中指定的接口成员
接口定义。在下面的示例中,类
ImplementationClass必须实现名为SampleMethod的方法
没有参数并返回void
您只是定义了
personFunctionality
变量&没有初始化,因此默认情况下它将为null,对吗?我看不出您在哪里将personFunctionality分配给实例。您可能想通过调用构造函数来分配它吗?PersonFunNational是从“PersonFunNational”界面创建的变量。请不要编写类似于catch(Exception ex){throw new Exception(ex.Message);}
的代码。这只会在你的代码中引入bug。谢谢你的神秘性。我会记住这一点。我还是个新手。根据OP,PersonFunctionality
是一个界面。谢谢你指出我错过了这一点,他必须实例化接口的实现者类。PersonFunctionality是一个接口,因此不可能从中创建实例。呃?@shutterrox,接口不能直接启动,但实现接口的具体类可以实例化。
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();
}
}