无法生成临时类(result = 1)CS0200

时间:2014-05-22 14:02:40

标签: c# c#-4.0 serialization permissions

我有一个正在序列化/反序列化的类,它在大多数机器上工作正常,但不能在其他机器上工作(我无法辨别其中的区别,尽管在出现问题的方框上我看到其他问题有“安全/许可”问题的提示[特别是我的应用程序可以创建一个文件夹,但后来无法写入文件......很奇怪,但不是主要问题]。

我得到的错误是:

Unable to generate a temporary class (result=1).
error CS0200: Property or indexer 'Namespace.Object.ParentOrganizations' cannot be assigned to -- it is read only

以下是财产:

    public List<long> ParentOrganizations
    {
        get
        {
            return m_OrganizationIDs;
        }
        internal set
        {
            m_OrganizationIDs = value;
        }
    }

如果我将“set”更改为public它确实有效,但我想知道为什么我必须只在几个特定的​​盒子上执行此操作...所以我可以帮助评估为什么这个和其他奇怪的问题正在发生。我认为在我的应用程序中一次修复一个奇怪的问题比找到和解决系统配置问题更麻烦(而且可能是错误的)。

更新:给予localMachine \ Everyone对执行文件夹的完全权限也解决了这个问题,但这不是一个好的长期解决方案。

1 个答案:

答案 0 :(得分:2)

假设您正在使用其中一个公共序列化程序,您将遇到串行器自身无法设置ParentOrganizations属性的问题,因为internal访问修饰符限制了对不在其中的所有调用方的访问权限那个属性是同一个大会。这会导致序列化程序(位于其他程序集中)抛出此异常,因为不允许他访问该属性。