- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有以下属性:
public virtual String Firstname { get; set; }
我只希望能够写入当前为空(未设置)的字段,这可以通过 DataAnnotations 实现吗?
最佳答案
数据注释是元数据,例如用于验证的元数据,因此您可以创建自定义数据注释来验证属性值,但验证不能确保您的属性在已经具有值的情况下不会被设置。那是应该成为属性 setter 本身的一部分的代码,例如:
private string _firstName;
public string FirstName
{
get
{
return _firstName;
}
set
{
if (_firstName != null) throw ...
_firstName = value;
}
}
如果通过数据注释,您只是指属性,那么答案是:它可以通过属性来实现,但您需要一些东西来实现与属性相关的一些逻辑。这通常是通过面向方面的编程 (AOP) 来完成的,您将在其中创建将由某些复杂 API 使用的标记属性。 API 将基于该属性使用自定义代码包装您的类,在编译时(例如 PostSharp)或运行时(例如 Unity、Spring.NET)添加 if
语句。
关于c# - DataAnnotations WriteOnly 如果属性 == null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7065133/
我有以下属性: public virtual String Firstname { get; set; } 我只希望能够写入当前为空(未设置)的字段,这可以通过 DataAnnotations 实现吗
我在 VB.Net 中将此类作为自定义控件的一部分编写。它允许我切换 3 个链接标签的状态,并使用 Text 属性设置每个标签的文本。这就是允许用户使用它做的所有事情。我可以毫无问题地转换 Enabl
我需要从 MyClass 中获取属性列表,不包括“只读”属性,我可以获取它们吗? public class MyClass { public string Name { get; set; }
我在 idl 文件中定义了一个接口(interface),并尝试将 vb6 项目转换为 vb.net。 转换从此 idl 的 tlb 创建了互操作,并且在 vs2010 中它提示该属性未实现(如下所示
我正在阅读 Stroustrup 的 c++ FAQ我注意到,有一次,他在语言中有一个writeonly限定符。经过一番讨论,我和一位同事只能想出一个目的——副作用,特别是在某些内存映射 IO 的情况
我有一个主从数据库。为了平衡一些负载,我希望我所有的 INSERT/UPDATE 查询都转到主服务器,而我所有的 SELECT 查询都转到从服务器(因为你不能在不弄乱它的情况下写入从服务器)。我在 d
我在 .Net 5.0 Web API 中使用 Swashbuckle (6.1.1)。我仍在学习,但我想实现一个类,其中某些属性仅在使用 GET“阅读”时才有效。 , 以及使用 POST“写入”时的
我是一名优秀的程序员,十分优秀!