是否可以防止根据元数据进行属性分配?

时间:2019-05-07 11:26:28

标签: c# .net dto data-transfer data-transfer-objects

我想创建DTO,以防止根据元数据或第二种类型进行属性分配。

前段时间,我偶然发现了一个可以做到这一点的库,但是我不记得它的名字了。

使用以下代码:

public class SomeDto
{
    public string FirstName { get; set; }

    public string LastName { get; set; }
}
var a = new SomeDto
{
    FirstName = "John",
    LastName = "Doe"
};

var b = new SomeDto();

这应该有效并允许编译:

b.FirstName = a.FirstName;

但这会在编译时引发错误:

b.FirstName = a.LastName;

因为FirstNameLastName的属性或第二种类型会有所不同。

所以最终的模型会这样:

1。使用额外的属性

public class FirstNameMetadataAttribute : Attribute { }
public class LastNameMetadataAttribute : Attribute { }

public class SomeDto
{
    [FirstNameMetadataAttribute]
    public string FirstName { get; set; }

    [LastNameMetadataAttribute]
    public string LastName { get; set; }
}

2。使用其他类型

public class FirstNameConstrain<T> : SomeLibraryType<T> { }
public class LastNameConstrain<T> : SomeLibraryType<T> { }

public class SomeDto
{
    public FirstNameConstrain<string> FirstName { get; set; }

    public LastNameConstrain<string> LastName { get; set; }
}

更新

考虑到所有这些,将其扩展到数据库模型,这也将使LINQ查询不易出错。

0 个答案:

没有答案