[Microsoft(R).NET Framework,版本4.6.81.0]
- - There was an error reflecting type
'Daff.Lae.TraceCommon.Exceptions.NicePopupException'.
- Cannot serialize member System.Exception.Data of type
System.Collections.IDictionary, because it implements IDictionary.
自:
namespace Daff.Lae.TraceCommon.Exceptions
{
[KnownType(typeof(Exception))]
[XmlSerializerFormat]
[Serializable]
public class NicePopupException : Exception
{
private NicePopupException() { }
public NicePopupException(string message) : base(message)
{ }
public NicePopupException(string message, Exception innerException) : base(message, innerException)
{ }
}
}
(绝望中)我尝试了[KnownType(typeof(Exception))],
[XmlSerializerFormat], [Serializable]
的所有变体。
(也就是说,它们不会导致错误)。
见到:
Visual Studio > Build > Build Daff.Lae.TraceCommon
$ cd to_appropriate_directory
$ xsd.exe .\Daff.Lae.TraceCommon.dll
问题IDictionary
位于Exception
_data
。
但是,如果删除NicePopupException
的所有用途并更改为Exception
,则不会出现此类错误。
我需要在NicePopupException
添加其他内容才能使其正常工作吗?
答案 0 :(得分:0)
我没有回答我的问题。这是我的评论的延续,但在答案中,所以我有更多的空间,可以格式化它。
我在评论中说我没有回应和搜索(Duck Duck Going!)并没有出现任何事情,所以看起来我们有一些不寻常的情况。它的旧代码,我不会付出任何努力来解决基础架构问题。
我要做的是获得解决方案(想要为所有C#类的子集生成模式),尝试单独为每个文件生成模式。如果有任何失败(就像它们那样 - 例外)那么它就不会影响其他每一类的(尝试)生成。
请注意,如果Window val df = Seq(
(1, "A", "G", "2016-10-12T12:10:00.000Z"),
(2, "B", "A", "2016-10-12T12:00:00.000Z"),
(3, "A", "B", "2016-10-12T12:05:00.000Z"),
(4, "D", "C", "2016-10-12T12:30:00.000Z"),
(5, "G", "D", "2016-10-12T12:35:00.000Z")
).toDF("nodeId", "typeFrom", "typeTo", "date")
df.as("df1").join(
df.as("df2"),
$"df1.typeFrom" === $"df2.typeTo"
).select(
$"df1.nodeId".as("nodeId_1"), $"df2.nodeId".as("nodeId_2"), $"df1.typeFrom".as("type"), $"df1.date"
).show(truncate=false)
// +--------+--------+----+------------------------+
// |nodeId_1|nodeId_2|type|date |
// +--------+--------+----+------------------------+
// |1 |2 |A |2016-10-12T12:10:00.000Z|
// |2 |3 |B |2016-10-12T12:00:00.000Z|
// |3 |2 |A |2016-10-12T12:05:00.000Z|
// |4 |5 |D |2016-10-12T12:30:00.000Z|
// |5 |1 |G |2016-10-12T12:35:00.000Z|
// +--------+--------+----+------------------------+
可以使用xsd.exe
或-Include <files>
个参数,则可以减轻此解决方案。
像这样的伪脚本:
-Exclude <files>
作为一个勤奋的SO&#(我们称之为#34;一个好的小蔬菜&#34;在澳大利亚:),这是我在Powershell中写的完整解决方案。
for i in find . -name "*cs"
do
className = $i | Replace '.cs', ''
xsd .\Daff.Lae.TraceCommon.dll /t:$className
mv schema0.xsd $className .xsd
done