【发布时间】:2011-08-31 02:30:30
【问题描述】:
我终于找到了问题所在,但这没有任何意义,只是似乎不可能。这甚至可以修复吗?我认为命名空间都是一样的,你可以通过输入命名空间来调用和访问来自不同命名空间的控件。类等,这主要用于分类(无论如何对我来说)。
我的问题是序列化似乎不接受新的命名空间,它生成的 ResX 代码存在错误,除非引用与项目命名空间位于同一命名空间中。
原始错误:
错误 1 Resx 文件无效。无法加载 .RESX 文件中使用的类型 Namespace2.FileFiltering、WindowsFormsApplication1、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null。确保已将必要的引用添加到您的项目中。第 127 行,位置 5。c:\users\aderic\documents\visual studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.resx 127 5 WindowsFormsApplication1
我想要一个可重用的控件,但我不想用它制作一个 DLL。 (我可以混淆它,但我不想让人们导入和使用它)。我有 2 个类,它们可以正常编译,但是因为我选择了不同的命名空间,唯一的编译错误是 ResX 没有找到对象。以下是 2 个类:
using System;
using System.Windows.Forms;
using System.Runtime.Serialization;
namespace Namespace2
{
class TestObject : Control
{
System.Collections.Generic.List<Namespace2.FileFiltering> InternalExtensions = new System.Collections.Generic.List<Namespace2.FileFiltering>();
[System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Content)]
public System.Collections.Generic.List<Namespace2.FileFiltering> ExtensionList
{
get
{
return InternalExtensions;
}
set
{
InternalExtensions = value;
}
}
public TestObject()
{
BackColor = System.Drawing.Color.Gray;
}
}
[Serializable]
public class FileFiltering : ISerializable
{
String InternalFileType = "New File Type";
String[] InternalExtensions = new String[] { "*.*" };
public String FileType
{
get
{
return InternalFileType;
}
set
{
InternalFileType = value;
}
}
public String[] Extensions
{
get
{
return InternalExtensions;
}
set
{
InternalExtensions = value;
}
}
public FileFiltering()
{
}
public FileFiltering(SerializationInfo info, StreamingContext context)
{
FileType = info.GetString("FileType");
Extensions = (String[])info.GetValue("FileExtensions", typeof(String[]));
//Debugging.
Console.WriteLine("FileType is " + FileType);
Console.WriteLine("First extension is " + Extensions[0]);
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("FileType", FileType);
info.AddValue("FileExtensions", Extensions);
}
}
}
有人知道解决方法还是我只是卡住了?我已经为此工作了几个小时,终于在一段时间后让它序列化,属性工作和一切,至少其中一些错误是我刚刚了解到它与项目命名空间不同的命名空间并不好。
【问题讨论】:
-
请为您的问题使用适当的标题。 “我束手无策”根本无法描述您的问题。
-
谢谢,我正在想一个标题并编辑这篇文章。这个标题不错。
-
您遇到的实际错误是什么?您如何准确地序列化这些对象?
-
我使代码复制/粘贴变得友好,您只需要一个空的 cs 文件来编译它。我得到的错误:Resx 文件无效。无法加载类型 Namespace2.FileFiltering 我序列化它们的方式:它们在另一个命名空间中。在这种情况下: Namespace2.FileFilter 是我正在调用的对象,我知道它存在但编译器要求不同。
标签: c# serialization namespaces resx