C# 域对象启动时从属性生成默认值

C# 域对象启动时从属性生成默认值,c#,automapper,C#,Automapper,我有一个名为User和UserCreateViewModel的域对象。Automapper用于从ViewModel映射到用户。 一切正常。映射完成后,我看到用户域对象的值分别位于UserId、CreatedOn和ModifiedOn中,如下所示 00000000-0000-0000-0000-000000000000 1/1/0001 12:00:00 AM 1/1/0001 12:00:00 AM 这些是安装用户对象时的默认值。这会导致问题,因为我的用户对象无法从属性获取创建Guid和日期

我有一个名为User和UserCreateViewModel的域对象。Automapper用于从ViewModel映射到用户。 一切正常。映射完成后,我看到用户域对象的值分别位于UserId、CreatedOn和ModifiedOn中,如下所示

00000000-0000-0000-0000-000000000000
1/1/0001 12:00:00 AM
1/1/0001 12:00:00 AM
这些是安装用户对象时的默认值。这会导致问题,因为我的用户对象无法从属性获取创建Guid和日期

注意:我不想硬编码超过默认值

是否有一种干净的方法来解决此问题,以便UserId、CreateOn和ModifedOn从属性生成值?

我想你明白我的问题

UserCreateViewModel

public class UserCreateViewModel
{
    public string UserName { get; set; }
    public string Password { get; set; }
}
使用者


看看Automapper的BeforeMap和AfterMap功能。这些可能会帮助您自定义默认值的分配。

请查看AutoMaper的BeforeMap和AfterMap功能。这些可以帮助您自定义默认值的分配

private Guid? _guid;
public Guid? UserId
{
    get
    {
        return (_guid.HasValue) ? _guid.Value : Guid.NewGuid();
    }
    set
    {
        _guid = value;
    }
}

public string UserName { get; set; }
public string Password { get; set; }

private DateTime? _createdOn;
public DateTime? CreatedOn
{
    get
    {
        return (_createdOn.HasValue) ? _createdOn.Value : DateTime.Now;
    }
    set
    {
        _createdOn = value;
    }
}

private DateTime? _modifiedOn;
public DateTime? ModifiedOn
{
    get
    {
        return (_modifiedOn.HasValue) ? _modifiedOn.Value : DateTime.Now;
    }
    set
    {
        _modifiedOn = value;
    }
}