c# - 访问器的静态扩展

标签 c# .net static extension-methods accessor

我有很多类,它们有很多属性,如下所示:

public AnyClass[] car
{
     get
     {
          return this.anyClassField;
     }
     set
     {
          this.anyClassField= value;
     }
}

在每个 set{} 访问器中,如果值为 null,我需要设置 isEmptyFlag=true。所以我想也许可以以某种方式编写静态扩展来自动执行此操作,或者可能是另一种解决方案?

最佳答案

您可以创建一个通用扩展方法来检查数组是否为 null 或空。

给出以下代码:

public class Foo
{
    private anyClass[] anyClassField;

    public anyClass[] car
    {
        get
        {
            return this.anyClassField;
        }
        set
        {
            this.anyClassField = value;
        }
    } 
}

public class anyClass
{
    // add properties here ....
}

您可以创建如下扩展方法:

public static class CollectionExtensions
{
    public static bool IsNullOrEmptyCollection<T>(this T[] collection)
    {
        if (collection == null)
            return true;

        return collection.Length == 0;
    }
}

使用代码(不要忘记包含 CollectionExtensions 类的命名空间):

var foo = new Foo();

// returns true
bool isEmpty = foo.car.IsNullOrEmptyCollection();

// add 1 element to the array....
foo.car = new [] { new anyClass() };

// returns false
isEmpty = foo.car.IsNullOrEmptyCollection();

关于c# - 访问器的静态扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19045478/

相关文章:

.net - 使用自定义 SerializerSettings 将 JToken 转换为 .NET 类型

.net - ASP.NET MVC-如何从局部 View 中获取当前操作?

java - 从静态方法 java 引用实例变量

tomcat - tomcat项目中大型静态文件放在哪里?

c++ - 使用基类中的函数静态调用纯虚函数的派生类实现

c# - 重构对象列表以实现业务规则

c# - 发送不记名 token 时 API 端点返回 "Authorization has been denied for this request."

c# - 隔离 Service Fabric ServiceContext 以进行单元测试

c# - 从 C# 调用托管 C++ 时出现编译错误

c# - 在 C# 中附加列表时处理列表?