Tôi muốn hạn chế tạo đối tượng bằng cách sử dụng hàm tạo mặc định. Bởi vì tôi có một desing như dưới đây:Thiết kế không có hàm tạo mặc định
class Program
{
static void Main(string[] args)
{
BaseClass bc = new BaseClass("","");
XmlSerializer xml = new XmlSerializer(typeof(BaseClass));
StreamWriter sw = new StreamWriter(File.Create("c:\\test.txt"));
xml.Serialize(sw,bc);
sw.Flush();
sw.Close();
}
}
[Serializable]
public class BaseClass
{
public string UserName, Password;
// I don't want to create default constructor because of Authentication
public BaseClass(string _UserName, string _Password)
{
UserName = _UserName;
Password = _Password;
f_Authenticate();
}
private void f_Authenticate() { }
}
public class DerivedClass:BaseClass
{
public DerivedClass(string _UserName, string _Password) : base(_UserName, _Password)
{
}
}
Điều này là ok. Nhưng khi tôi làm BaseClass để Serializable nó sẽ tạo ra lỗi này: Unhandled Exception: System.InvalidOperationException: ConsoleApplication1.BaseC lass cannot be serialized because it does not have a parameterless constructor.
Bây giờ thiết kế của tôi đang sụp đổ vì tôi cần phải có Username
, Password
thông số nhưng constructor mặc định là làm hỏng thiết kế của tôi ....
gì tôi nên làm gì?
Thực ra tôi muốn tìm hiểu mọi khả năng. nếu tôi có thể/không thể sử dụng những gì bạn sẽ cung cấp cho tôi? – uzay95
Bản sao của http://stackoverflow.com/questions/267724/why-xml-serializable-class-need-a-parameterless-constructor – Matten