我需要从基类继承,其中一个方法的构造函数有8个参数。
我不会需要所有8个参数,我只需要一个。但是,我确实需要实现该方法。
public MyClass : BaseClass
{
public class MyClass(string myArg):base(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
{
// do stuff
}
}
导致史诗失败编译器消息,其中args2-8是硬编码的。任何提示?
澄清:参数是基类的所有属性,通过它来设置 初始化。
由于基类是框架类,我无法修改其属性或构造函数。
希望对那些想要知道参数是什么的人进行最终编辑(并且不,开头大括号不是问题,不管怎样),这是我试图作为自定义成员资格的一部分移植的VB.NET代码提供商。
可悲的是,找不到C#成员资格提供者的例子。
Public Sub New(ByVal userName As String)
MyBase.New("Shiningstar.SSSMembershipProvider", userName, _
userName.GetHashCode, userName, "", "", False, False, Today, _
Today, Today, Today, Today)
Me.m_UserName = userName ' UserName() is read only
End Sub
本例中的基类是System.Web.Security.MembershipUser
答案 0 :(得分:3)
我从来没有听说过方法构造函数,所以我假设你的意思是一个普通的构造函数。您应该能够对一些参数进行硬编码。这是一个编译无错误的小代码示例:
public class MyBaseClass
{
public MyBaseClass ( int arg2, string arg1,string ar3)
{ }
}
public class MyClass : MyBaseClass
{
public MyClass (int argument) : base (argument, "not supplied", "hard-coded")
{ }
}
我希望这能回答你的问题。
编辑(一些绊脚石:)
您确定拥有正确的访问修饰符(受保护,内部,私有,公共,内部受保护)吗?
答案 1 :(得分:2)
如果没有确切的错误消息,我无法确定,但我怀疑你的arg1 .. arg8是该类的实例字段,不能在基础构造函数之前使用。
如果你将它们设为静态字段,那么问题就会解决。
答案 2 :(得分:1)
疯狂猜测。问题是您在类声明中缺少class
关键字吗?
public class MyClass : BaseClass
{
public MyClass(string myArg):base(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
{
// do stuff
}
}
根据你在“做事”中所做的事情,你可能会丢掉你的myArg
......但这可能不是你的问题。
答案 3 :(得分:1)
您能否提供一些关于arg2-arg8的更多背景信息?
可以传递给基类构造函数的值的类型有限制。例如,您无法传递实例字段或属性。常量,构造函数参数和文字应该没问题。
答案 4 :(得分:1)
如果要使用基类或当前类的属性作为构造函数的参数,那么这些属性必须是静态的。我猜你得到的错误是关于“这个引用没有初始化”或类似的东西。任何返回值然后用作参数的方法都是如此。