System.TypeAccessException:尝试通过方法“X”访问类型“Y”失败

2023-12-06

好吧,我已经用谷歌搜索了近两天,并且尝试了几乎所有与此错误相关的解决方案,但没有任何效果。大多数问题都是关于 Click-once 应用程序、JSON、Web 应用程序等的安全设置。但对于普通的旧 winforms 应用程序来说却没有任何问题。

这是完整的错误

System.TypeAccessException:尝试通过方法“Microsoft.Xml.Serialization.GenerateAssembly.XmlSerializationWriterSystemSetup.Write3_SystemSetup(System.Object)”访问类型“DataFacture.Common.Globals+SystemSetup”失败。 在 Microsoft.Xml.Serialization.GenerateAssembly.XmlSerializationWriterSystemSetup.Write3_SystemSetup(对象 o)

这是“SystemSetup”类的简化版本

public class SystemSetup
    {
        private string machineId, windowsVersion;

        public SystemSetup() { }
        public SystemSetup(string machineId, string windowsVersion)
        {
            this.machineId = machineId;
            this.windowsVersion = windowsVersion
        }

        public string MachineID { get { return machineId; } set { machineId = value; } }
        public string WindowsVersion{ get { return windowsVersion; } set { windowsVersion= value; } }
    }

现在,我尝试使用以下代码在“writer.Serialize(wfile, objectSerializer);”处生成 SystemSetup 对象的 XML行,出现错误

public static void WriteXML(Object objectSerializer, String XMLPath, String FileName)
    {
        try
        {
            if (XMLPath.Substring(XMLPath.Length - 1, 1) != @"/")
                XMLPath = String.Format("{0}\\", XMLPath);

            XmlSerializer writer = null;
            Type objectType = objectSerializer.GetType();
            switch (objectType.Name)
            {
                case "SystemSetup":
                    writer = new XmlSerializer(typeof(Globals.SystemSetup));
                    break;
            }

            var wfile = new System.IO.StreamWriter(String.Format("{0}{1}", XMLPath, FileName));
            writer.Serialize(wfile, objectSerializer);
            wfile.Close();
        }
        catch (Exception ex)
        {
            ErrorHandler.ShowErrorMessage(ex);
        }
    }

这是一个winforms应用程序。它不是点击一次。我没有对任何集会实施任何安全限制。此外,我从这里调用的也没有第三方集会。

编辑:以上内容位于相同的命名空间中,但位于单独的类文件中。如果我将它们放入一个类文件中,它就可以工作。不确定这是否有帮助


经过大量的摆弄。我发现了问题;我这边是菜鸟错误。调用“SystemSetup”对象的“Globals”类未指定为私有或公共。我只是

static class Globals
{
    public class SystemSetup
    {
        //My code here
    }
}

在设计时,没有任何问题。您可以访问“Globals”内的所有类。但是,在运行时,调试器无法访问“Globals”类,因此您需要将其指定为“public”

public static class Globals
{
    public class SystemSetup
    {
        //My code here
    }
}

我完全忽略了这一点。我想当然地认为,由于我可以在设计时访问该类,并且编译器在构建解决方案时没有问题,所以它应该在运行时工作,并且由于“SystemSetup”类是公共的,我认为它会工作。 OOP编程101,完全错过了。

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

System.TypeAccessException:尝试通过方法“X”访问类型“Y”失败 的相关文章

  • 当事件button.click发生时,如何获取按钮名称/标签?

    我以编程方式制作按钮并将它们添加到堆栈面板中 以便每次用户导航到页面时按钮都会发生变化 我正在尝试做这样的事情 当我单击创建的按钮时 它将获取按钮的标签并转到正确的页面 但是 我无法使用 RoutedEventHandler 访问按钮元素
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 假装 .NET 字符串是值类型

    在 NET 中 字符串是不可变的 并且是引用类型变量 这通常会让新的 NET 开发人员感到惊讶 因为他们的行为可能会将它们误认为是值类型对象 然而 除了使用实践StringBuilder对于长连接 尤其是 在循环中 在实践中是否有任何理由需
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 是否使用 C# 数据集? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 C 中的数据集概念有点困惑 编码 ASP NET 站点 但这并不重要 在我的阅读中 我了解到它们 本质上 用作我的应用程序和我的
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 以编程方式创建 FloatingActionButton(无需 xml)

    我很欣赏 Android 的 FloatingActionButton fab 功能 并希望在我的项目中的许多不同地方使用它们 现在 我有这样的东西 我有几个 xml 规范 除了 id 图标和 onclick 之外 所有这些规范都是相同的
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • 模板类的模板构造函数的 C++ 显式模板特化

    我有一个像这样的课程 template
  • Android:是否可以在可绘制选择器中使用字符串/枚举?

    问题 Q1 有人设法让自定义字符串 枚举属性在 xml 选择器中工作吗 我通过以下 1 获得了一个布尔属性 但不是字符串属性 编辑 感谢您的回答 目前 android 仅支持布尔选择器 原因请参阅已接受的答案 我计划实现一个复杂的自定义按钮
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 无法将字符串文字分配给装箱的 std::string 向量

    这是我的类型系统的简化版本 include
  • 当用户更改 Windows 中的语言键盘布局时如何通知?

    I want to show a message to user when the user changes the language keyboard layout of Windows for example from EN to FR

随机推荐