.Net 如何为部分 class 创建构造函数?
.Net how to make a constructor for a partial class?
我有一个带有构造函数的部分 class,但构造函数抛出错误,因为 'a member with the same signature is already declared'(另一个部分 class 中存在同名的构造函数)。当名称已被使用时,如何为部分 class 创建构造函数?
public partial class DigitalArchivesAssetsDataContext
{
public DigitalArchivesAssetsDataContext()
: base(System.Configuration.ConfigurationManager.ConnectionStrings["digitalArchivesAssets"].ConnectionString, mappingSource)
{
OnCreated();
}
}
你不能。编译器实质上是在构建项目时将所有部分 class 的文本合并为一个 class。每个 class.
不能有多个具有相同名称和签名的方法(包括构造函数)
一个选择是对构造函数使用不同的签名,或者修改您的体系结构以不需要构造函数。例如,您可以使用现有的构造函数并使用某种 Initialize
方法来运行来自其他构造函数的代码。
您也可以使用 "Partial Methods"。这些是标记为 partial
的方法,您可以从现有构造函数 "if they exist" 中调用它们。它们被设计为来自代码生成器的部分 classes 的扩展点,但您也可以使用它们。有关详细信息,请参阅 MSDN。
您不能在拆分的部分 classes 中创建多个具有匹配签名的构造函数,因为在编译时,两个部分合并在一起生成一个 class 文件。例如
class ClassRoom
{
private int boycount; //field
public ClassRoom() //default constructor
{
boycount = 30;
}
public ClassRoom(int bcount) //overloaded constructor
{
boycount = bcount;
}
public double Avg() //method
{
//statements goes here
}
}
在上面的例子中,我们可以像这样拆分 class。
//Calculation1.cs
partial class ClassRoom
{
private int boycount; //field
public ClassRoom() //default constructor
{
boycount = 30;
}
}
//Calculation2.cs
partial class ClassRoom
{
public ClassRoom(int bcount) //overloaded constructor
{
boycount = bcount;
}
public double Avg() //method
{
//statements goes here
}
}
希望清楚。
我有一个带有构造函数的部分 class,但构造函数抛出错误,因为 'a member with the same signature is already declared'(另一个部分 class 中存在同名的构造函数)。当名称已被使用时,如何为部分 class 创建构造函数?
public partial class DigitalArchivesAssetsDataContext
{
public DigitalArchivesAssetsDataContext()
: base(System.Configuration.ConfigurationManager.ConnectionStrings["digitalArchivesAssets"].ConnectionString, mappingSource)
{
OnCreated();
}
}
你不能。编译器实质上是在构建项目时将所有部分 class 的文本合并为一个 class。每个 class.
不能有多个具有相同名称和签名的方法(包括构造函数)一个选择是对构造函数使用不同的签名,或者修改您的体系结构以不需要构造函数。例如,您可以使用现有的构造函数并使用某种 Initialize
方法来运行来自其他构造函数的代码。
您也可以使用 "Partial Methods"。这些是标记为 partial
的方法,您可以从现有构造函数 "if they exist" 中调用它们。它们被设计为来自代码生成器的部分 classes 的扩展点,但您也可以使用它们。有关详细信息,请参阅 MSDN。
您不能在拆分的部分 classes 中创建多个具有匹配签名的构造函数,因为在编译时,两个部分合并在一起生成一个 class 文件。例如
class ClassRoom
{
private int boycount; //field
public ClassRoom() //default constructor
{
boycount = 30;
}
public ClassRoom(int bcount) //overloaded constructor
{
boycount = bcount;
}
public double Avg() //method
{
//statements goes here
}
}
在上面的例子中,我们可以像这样拆分 class。
//Calculation1.cs
partial class ClassRoom
{
private int boycount; //field
public ClassRoom() //default constructor
{
boycount = 30;
}
}
//Calculation2.cs
partial class ClassRoom
{
public ClassRoom(int bcount) //overloaded constructor
{
boycount = bcount;
}
public double Avg() //method
{
//statements goes here
}
}
希望清楚。