我正在使用JSON.NET 6.0.1.当我使用该SerializeObject方法序列化派生类的对象时,它仅从基类序列化属性.这是代码片段:
string v = JsonConvert.SerializeObject(
service,
Formatting.Indented,
new JsonSerializerSettings()
{
TypeNameHandling = TypeNameHandling.All
});
Run Code Online (Sandbox Code Playgroud)
基类:
[DataContract]
public abstract partial class DataEntity : IDataEntity, INotifyPropertyChanging, INotifyPropertyChanged
{
...
}
Run Code Online (Sandbox Code Playgroud)
派生类:
[Table(Name = "dbo.mytable")]
public sealed class mytable : DataEntity
{
...
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
在堆栈溢出这里我找到了记忆单参数函数的代码:
static Func<A, R> Memoize<A, R>(this Func<A, R> f)
{
var d = new Dictionary<A, R>();
return a=>
{
R r;
if (!d.TryGetValue(a, out r))
{
r = f(a);
d.Add(a, r);
}
return r;
};
}
Run Code Online (Sandbox Code Playgroud)
虽然这段代码对我来说很有用,但是当有多个线程同时调用memoized函数时,它有时会失败:Add使用相同的参数调用该方法两次并抛出异常.
如何使memoization线程安全?
我想为对象的属性添加一些自定义的以PropertyGrid为中心的属性,以提供更丰富的编辑,隐藏一些值并将它们分类,因为我正在使用的那个类不提供这样的功能而且我什么也做不了关于它.
真的,这是MS的应用程序设置生成代码,所以你不能以任何方式扩展它的属性.请参阅我的另一个问题:运行时AppSettings.settings编辑器对话框