如何根据对象的使用有条件地将对象属性保持为“必需”?

我有一个随处可见的对象。现在,我想根据使用对象的位置,有条件地使该对象的属性成为必需。

这是示例:

这是将在所有地方使用的对象,

public class Contact
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
}

现在我还有一个类,上面的对象被用作属性,

public class Registration
{
    public Contact ContactDetails { get; set; }
    public List<ChildContact> ChildContact { get; set; }
}

现在有一个“ ChildContact”类,其中“ Contact”类也用作属性,

public class ChildContact
{
    public Contact Contact { get; set; }
    public int NoOfStudents { get; set; }
}

因此,当在“注册”中使用“联系人”类时,应该需要FristName和LastName属性,而在“ ChildContact”中使用时,这些属性应该是可选的。

请帮助我完成此任务。

提前致谢。

评论
qq情侣网名
qq情侣网名

IF you're the developer of Contact and others use your library for their Registration and ChildContact there is no way to control the usage. Best case scenario you can create separate interfaces/classes for enforced/unenforced Contact.

如果您控制完整的源代码,并且只想仔细检查一下自己,请提供将检查是否分配了这些字段的设置器。

public class Registration
{
    private Contact _contactDetails;
    public Contact ContactDetails
    {
        get => _contactDetails;
        set
        {
            if (value == null) throw new NullReferenceException("...");
            if (value.FirstName == null || value.FirstName == string.Empty) throw new ArgumentException("Provide first name.");
            if (value.LastName == null || value.LastName == string.Empty) throw new ArgumentException("Provide last name.");
            _contactDetails = value;
        }
    }
    public List<ChildContact> ChildContact { get; set; }
}
点赞
评论