C# 在另一个类C中创建对象?
我正在进入oop的第一步,这需要删除我的应用程序,并将其全部重新设计为三层和面向对象的。叹气我有一个提交对象,它应该包含一个customer对象以及一个broker和coverage对象;我想在每个包含的对象的字段中存储来自db的一些datareader结果,但是当我试图用一个新提交对象调用Customer对象时,我什么也得不到。VS无法识别提交包含客户对象。我显然遗漏了一些关键点,所以考虑到这一点,想法?代码如下C# 在另一个类C中创建对象?,c#,sql-server,visual-studio,ado.net,C#,Sql Server,Visual Studio,Ado.net,我正在进入oop的第一步,这需要删除我的应用程序,并将其全部重新设计为三层和面向对象的。叹气我有一个提交对象,它应该包含一个customer对象以及一个broker和coverage对象;我想在每个包含的对象的字段中存储来自db的一些datareader结果,但是当我试图用一个新提交对象调用Customer对象时,我什么也得不到。VS无法识别提交包含客户对象。我显然遗漏了一些关键点,所以考虑到这一点,想法?代码如下 //This is the Submission class here publ
//This is the Submission class here
public class Submission
{
public int SubmissionId {get;set;}
public int Status { get; set; }
public string StatusComment { get; set; }
public class Customer
{
//public Customer() { }
public int CustId { get; set; }
public string CustName { get; set; }
public string CustAddress { get; set; }
public string CustState { get; set; }
public string CustCity { get; set; }
public int CustZip { get; set; }
public int SicNaic { get; set; }
}
public object Customer();
}
//These lines throw an error:
无法通过表达式引用类型。VS无法识别TempSubmission.Customer对Submission中的Customer对象的调用
public class Submission
{
public Submission()
{
this.Customer = new Customer();
}
public int SubmissionId { get; set; }
public int Status { get; set; }
public string StatusComment { get; set; }
public Customer Customer { get; set; }
}
public class Customer
{
//public Customer() { }
public int CustId { get; set; }
public string CustName { get; set; }
public string CustAddress { get; set; }
public string CustState { get; set; }
public string CustCity { get; set; }
public int CustZip { get; set; }
public int SicNaic { get; set; }
}
哦。。从哪里开始?将您的Customer类放在自己的Customer.cs文件中,将您的Submission类放在自己的Submission.cs文件中 然后,您可以执行以下简单的提交类:
public class Submission
{
// consider implementing the below as properties to more finely control access
public int SubmissionId;
public int Status;
public string StatusComment;
public Customer SubmissionCustomer; // <-- this is null until you set it to a Customer object, either in the constructor or externally.
public Submission() {
// constructor
}
}
然后阅读有关属性和构造函数的内容,并根据需要添加它们。见:
属性具有私有/公共模式。至于建造商:
见:
每当您创建类的实例对象时,都会调用构造函数。仅在Submission中定义Customer对象不会使Submission包含Customer的实例。对于您想要执行的操作,只需将Customer置于Submission外部,并在Submission内部定义Customer属性。您正试图通过tempSubmission引用实际类型Customer。相反,您必须引用一个Customer实例,该实例将通过属性或类似内容公开。问题在于您的客户类型不是特定的,它被定义为一个对象而不是客户
public class Submission
{
public Submission()
{
this.Customer = new Customer();
}
public int SubmissionId { get; set; }
public int Status { get; set; }
public string StatusComment { get; set; }
public Customer Customer { get; set; }
}
public class Customer
{
//public Customer() { }
public int CustId { get; set; }
public string CustName { get; set; }
public string CustAddress { get; set; }
public string CustState { get; set; }
public string CustCity { get; set; }
public int CustZip { get; set; }
public int SicNaic { get; set; }
}
要实现您想要做的事情,您必须向提交类添加一个新成员(在本例中为Customer类型的属性),就像您对public object Customer所做的那样;基本上,定义一个名为Customer of type object的方法
您要做的是定义一个类型为Customer的属性,称为whatever,例如RelatedCustomer
我认为您希望Customer类位于Submission类之外,Submission类包含Customer的实例
public class Submission
{
public Submission()
{
this.Customer = new Customer();
}
public int SubmissionId { get; set; }
public int Status { get; set; }
public string StatusComment { get; set; }
public Customer Customer { get; set; }
}
public class Customer
{
//public Customer() { }
public int CustId { get; set; }
public string CustName { get; set; }
public string CustAddress { get; set; }
public string CustState { get; set; }
public string CustCity { get; set; }
public int CustZip { get; set; }
public int SicNaic { get; set; }
}
尝试使用声明移动到Top当前您将Customer定义为提交的内部类,我认为这不是您想要的。您希望customer与Submission一起成为顶级类,而不是让Submission包含对customer实例的引用。您将成员添加为公共字段,属性可能是更好的选择。同意,只是尝试保持简单的开始;Brazos-使用属性。谢谢,@Mikey。这就是我需要的。有这么多的信息,当你不知道正确的问题时,很难找到正确的东西,你知道吗?没问题。OT。但我在为我正在修理的一辆旧车找换档操纵带时遇到了类似的问题。。谁知道这叫什么?堆栈溢出是一个很好的资源,我将启动Spring框架,并计划在此过程中提出许多问题!通过创建私有变量,然后右键单击它并选择重构->封装字段,可以使用VS自动创建属性。享受