没有默认构造函数的设计

2023-11-25

我想限制使用默认构造函数创建对象。因为我有如下设计:

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 设为可序列化时,它会生成以下错误:Unhandled Exception: System.InvalidOperationException: ConsoleApplication1.BaseC lass cannot be serialized because it does not have a parameterless constructor.

现在我的设计正在崩溃,因为我需要Username, Password参数但默认构造函数正在破坏我的设计......

我应该怎么办?


创建私有默认构造函数

private DerivedClass()
{
    // code
}

即使它是私有的,序列化程序也会成功调用它

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有默认构造函数的设计 的相关文章

  • Environment.CurrentDirectory 与 System.IO.Directory.GetCurrentDirectory

    我正在编写一个 Net WinForms 并不断在调试和发布配置之间切换 并且有一些文件我需要任一配置才能访问 我想做的是将文件放在 BIN 文件夹中的公共目录中 这样它看起来像这样 MyProject Bin CommonFiles My
  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • 在 C# 中,如何根据在 gridview 行中单击的按钮引用特定产品记录

    我有一个显示产品网格视图的页面 该表内有一列 其中有一个名为 详细信息 的超链接 我想这样做 以便如果用户单击该特定产品的详细信息单元格 将打开一个新页面 提供有关该产品的更多信息 我不确定如何确定哪个Product记录链接的详细信息以及我
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • C++ 对象用 new 创建,用 free() 销毁;这有多糟糕?

    我正在修改一个相对较大的 C 程序 不幸的是 并不总是清楚我之前的人使用的是 C 还是 C 语法 这是在一所大学的电气工程系 我们 EE 总是想用 C 来做所有事情 不幸的是 在这种情况下 人们实际上可以逃脱惩罚 但是 如果有人创建一个对象
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • 在 Win32 控制台应用程序中设置光标位置

    如何在 Win32 控制台应用程序中设置光标位置 最好 我想避免制作句柄并使用 Windows 控制台功能 我花了整个早上沿着那条黑暗的小巷跑 它产生的问题比它解决的问题还要多 我似乎记得当我在大学时使用 stdio 做这件事相对简单 但我
  • 无法将字符串文字分配给装箱的 std::string 向量

    这是我的类型系统的简化版本 include
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • Octave/Matlab 与 Scipy 中的周期图

    我正在使用 scipy 将一些 matlab 代码移植到 python 中 但遇到了以下行 Matlab 倍频程代码 Pxx f periodogram x 512 5 Python代码 f Pxx signal periodogram x
  • JSONPath通过子子值获取父元素的id

    鉴于以下 JSON 我想得到id通过子元素的 equals 文本比较父元素的字段 datapoints id default 1 definedBy default 0 1 featureValues bui displayname Hea
  • 使用 Google Apps 脚本创建草稿邮件

    我想知道是否可以使用 Google Apps 脚本创建草稿邮件 如果是的话 怎么可能 问候 塞巴斯蒂安 此时 无法创建出现在您的Drafts文件夹 之前已请求此功能 请参阅第985期 如果您有兴趣接收任何更新 请访问该问题并加注星标 EDI
  • Entity Framework Core 中的流畅 API、多对多

    我在 stackoverflow 上搜索了生成的正确解决方案多对多关系 使用 EF Core 代码优先和 Fluent API 一个简单的场景是 public class Person public Person Clubs new Has
  • 将 jQuery 插件与 Backbone 和 Requirejs 一起使用

    我正在使用backbone requirejs jquery 并且我在当前的html页面 准确地说是backbone html模板 中加载jquery插件时遇到问题 有我需要的配置 require config paths some cod
  • 如何判断文件夹是否打开?

    在我的应用程序中 我尝试重命名该文件夹 但如果在 Windows 资源管理器中打开该文件夹 我会得到一个IOException 如何在 C 中判断文件夹是否在 Windows 资源管理器中打开 捕获 IOException 正如其他人所说
  • Python 尝试例外

    try statement 1 statement 2 except Exception err print err pass 这可能很微不足道 但直到现在我才真正考虑过它 我发现自己无法回答以下问题 如果语句 1 中出现错误 语句 2 是
  • C/C++ 改变 const 的值

    我有一篇文章 但我把它弄丢了 它展示并描述了一些人们应该小心的 C C 技巧 其中之一让我感兴趣 但现在我正在尝试复制它 但无法将其编译 这个概念是有可能偶然改变一个值const在 C C 中 事情是这样的 const int a 3 I
  • 在 Javascript 中,即使从不抛出异常,使用 try-catch 块是否昂贵?

    当其中任何一个都没有抛出异常时 使用多个 try catch 块是否 慢 我的问题与this one 但对于 JavaScript 假设我有 20 个函数 其中包含 try catch 块 另一个函数调用这 20 个函数中的每一个他们都没有
  • 不同程序集中的两个分部类是否可以代表同一个类?

    我在名为 MyProject Data 的项目中有一个名为 Article 的类 它充当我的 Web 应用程序的数据层 我有一个名为 MyProject Admin 的单独项目 它是一个基于 Web 的管理系统 用于查看 编辑数据 并使用
  • AlamoFire 忽略缓存控制标头

    是否可以忽略cache control使用 AlamoFire 执行请求 处理响应时的标头 目前我正在发出如下请求 服务器返回大量cache control标头 而实际上我们需要忽略它们 Alamofire request GET url
  • Powershell - 使用 get-adcomputer 时过滤 OU

    我正在尝试创建一个脚本 该脚本根据计算机可能具有的特定属性生成计算机列表 例如 我试图列出 Windows XP 计算机和 Windows 7 计算机的列表 将它们的名称放入 csv 文件中 并输出每台计算机的最终计数 到目前为止 这是我的
  • 如何在 ASP.NET MVC 中禁用 HTTP Keep-Alive?

    有没有办法告诉 IIS ASP NET 不允许某些请求保持活动状态 或者甚至对于整个网站 如果这真的是唯一的方法吗 对于整个站点 使用 IIS 7
  • 如何用 PHP Heredoc 语法显示数组元素或对象属性的值

    我在定界符输入字段中显示数组值时遇到问题 这是一段代码 class Snippet protected user protected class protected messages public function construct th
  • JTable + 排序特定字段

    我有一个 JTable 并添加了排序 现在 JTable 有 5 列 日期字段中的第二列转换为 DD MM YYYY 并显示在单元格的 JTextField 中 当我将其按字符串排序并且日期混淆时 如何更改该特定列的排序行为 例如 按 AS
  • 脚本在 IDLE 中工作,但 .py 文件不起作用

    我有一个 tkinter 脚本 它在 IDLE 中运行得很好 但是 当我从 Windows 资源管理器中双击 py 文件时 控制台窗口会闪烁半秒 然后退出 我能够丝网打印控制台窗口 它说 etc etc NameError global n
  • 如何解析网页中的动态内容?

    我尝试从此网址获取代理列表 免费代理列表 这很酷 但是端口号是动态 JavaScript 内容 如何从此页面获取 JavaScript 生成的内容 我有 jsoup 和 djNativeSwing 但我想在后台线程中执行此操作 JWebBr
  • 比较 JPA 查询中的当前日期时间

    我想将数据库中的日期与 JPA 查询中的当前日期时间进行比较 捕获限制日期 我的要求如下 数据库 captureLimitDate 04 07 2012 19 03 00 当前日期时间 04 07 2012 20 03 00 我的 JPAQ
  • anaconda 无法导入 matplotlib.pyplot

    当我尝试导入 matplotlib pyplot 时出现此错误 我什至无法通过 conda install 安装 matplotlib pyplot 它显示了这一点 导入 matplotlib pyplot Traceback 最近一次调用
  • 没有默认构造函数的设计

    我想限制使用默认构造函数创建对象 因为我有如下设计 class Program static void Main string args BaseClass bc new BaseClass XmlSerializer xml new Xm