Resolved #1580 Make Entity.Id protected to prevent accidently changing it.

pull/1810/head
Halil İbrahim Kalkan 6 years ago
parent efc202bd56
commit 8f2de58e44

@ -23,7 +23,7 @@ namespace Volo.Abp.Domain.Entities
public abstract class Entity<TKey> : Entity, IEntity<TKey>
{
/// <inheritdoc/>
public virtual TKey Id { get; set; }
public virtual TKey Id { get; protected set; }
protected Entity()
{

@ -1,5 +1,8 @@
using System;
using System.Reflection;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Json;
@ -7,21 +10,43 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
{
public class Utf8JsonMemoryDbSerializer : IMemoryDbSerializer, ITransientDependency
{
private readonly IJsonSerializer _jsonSerializer;
private static readonly JsonSerializerSettings MemoryDbSerializerSettings;
public Utf8JsonMemoryDbSerializer(IJsonSerializer jsonSerializer)
static Utf8JsonMemoryDbSerializer()
{
_jsonSerializer = jsonSerializer;
MemoryDbSerializerSettings = new JsonSerializerSettings
{
ContractResolver = new ResolverWithPrivateSetters(),
ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor
};
}
byte[] IMemoryDbSerializer.Serialize(object obj)
{
return Encoding.UTF8.GetBytes(_jsonSerializer.Serialize(obj));
var jsonString = JsonConvert.SerializeObject(obj, MemoryDbSerializerSettings);
return Encoding.UTF8.GetBytes(jsonString);
}
public object Deserialize(byte[] value, Type type)
{
return _jsonSerializer.Deserialize(type, Encoding.UTF8.GetString(value));
var jsonString = Encoding.UTF8.GetString(value);
return JsonConvert.DeserializeObject(jsonString, type, MemoryDbSerializerSettings);
}
public class ResolverWithPrivateSetters : DefaultContractResolver
{
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
var prop = base.CreateProperty(member, memberSerialization);
if (prop.Writable)
{
return prop;
}
prop.Writable = member.As<PropertyInfo>()?.GetSetMethod(true) != null;
return prop;
}
}
}
}

@ -40,7 +40,7 @@ namespace Volo.Abp.Domain.Entities
private class MyEntityImplementsIEntity : IEntity<Guid>
{
public Guid Id { get; set; }
public Guid Id { get; protected set; }
public object[] GetKeys()
{
@ -51,7 +51,7 @@ namespace Volo.Abp.Domain.Entities
private class MyEntityDisablesIdGeneration : Entity<Guid>
{
[DisableIdGeneration]
public override Guid Id { get; set; }
public override Guid Id { get; protected set; }
}
}
}

Loading…
Cancel
Save