Дизайн без конструктора по умолчанию

Я хочу ограничить создание объекта с помощью конструктора по умолчанию. Потому что у меня есть дизайн, как показано ниже:

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)
    {
    }
}

Это нормально. Но когда я делаю BaseClass для Serializable, он генерирует эту ошибку: Необработанное исключение: System.InvalidOperationException: ConsoleApplication1.BaseC lass не может быть сериализован, потому что у него нет конструктора без параметров.

Теперь мой дизайн рушится, потому что мне нужны параметры Имя пользователя, Пароль, но конструктор по умолчанию портит мой дизайн....

Что мне делать?

]
7
задан uzay95 10 April 2012 в 11:55
поделиться