Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在扩展类上设置自定义值_C#_Extending Classes - Fatal编程技术网

C# 在扩展类上设置自定义值

C# 在扩展类上设置自定义值,c#,extending-classes,C#,Extending Classes,我不确定这是否可能。我遇到了一个处理客户端api的独特问题。 我需要扩展一个类并添加一个基类中不存在的bool属性 下面是我试图完成的一个例子 public class baseClass { //.. No Editable Access } public class Extended { public bool flaggedAsDeleted(this baseClass bc) { //Idealy was looking for get; se

我不确定这是否可能。我遇到了一个处理客户端api的独特问题。 我需要扩展一个类并添加一个基类中不存在的bool属性

下面是我试图完成的一个例子

public class baseClass
{
    //.. No Editable Access
}

public class Extended
{
    public bool flaggedAsDeleted(this baseClass bc)
    {
        //Idealy was looking for get; set; but I know that don't work
        return true;// Need to know if possible to set property on baseClass or Alternative
    }

    public void flagAsDeleted(this baseClass bc)
    {
        flaggedAsDeleted = true;
    }
}

public class program
{
    public void doit()
    {
        baseClass bc = new baseClass();
        bc.flagAsDeleted();
    }

}

如果您试图实际扩展一个类,可以这样做:

public class BaseClass
{
    //.. No Editable Access
}

public class Extended : BaseClass
{
    public bool FlaggedAsDeleted { get; set; }
}
如果试图向现有类添加数据,则有两个选项:

  • 继承-如上所示

  • 封装-创建一个新对象,该对象包含要添加到的类型的实例


  • C#提供了一个名为的特性,它允许您向现有类添加方法。然而,这些实际上只是语法上的糖分,因为您仍然受限于类的公共API

    public class BaseClass
    {
        public int Value { get; set; }
    }
    
    public static class ExtensionMethods
    {
        public static void Increment(this BaseClass b)
        {
            b.Value += 1;
        }
    }
    

    但是,扩展方法不允许您向现有类添加数据。

    如果您试图实际扩展一个类,您可以这样做:

    public class BaseClass
    {
        //.. No Editable Access
    }
    
    public class Extended : BaseClass
    {
        public bool FlaggedAsDeleted { get; set; }
    }
    
    如果试图向现有类添加数据,则有两个选项:

  • 继承-如上所示

  • 封装-创建一个新对象,该对象包含要添加到的类型的实例


  • C#提供了一个名为的特性,它允许您向现有类添加方法。然而,这些实际上只是语法上的糖分,因为您仍然受限于类的公共API

    public class BaseClass
    {
        public int Value { get; set; }
    }
    
    public static class ExtensionMethods
    {
        public static void Increment(this BaseClass b)
        {
            b.Value += 1;
        }
    }
    

    但是,扩展方法不允许您向现有类添加数据。

    如果您试图实际扩展一个类,您可以这样做:

    public class BaseClass
    {
        //.. No Editable Access
    }
    
    public class Extended : BaseClass
    {
        public bool FlaggedAsDeleted { get; set; }
    }
    
    如果试图向现有类添加数据,则有两个选项:

  • 继承-如上所示

  • 封装-创建一个新对象,该对象包含要添加到的类型的实例


  • C#提供了一个名为的特性,它允许您向现有类添加方法。然而,这些实际上只是语法上的糖分,因为您仍然受限于类的公共API

    public class BaseClass
    {
        public int Value { get; set; }
    }
    
    public static class ExtensionMethods
    {
        public static void Increment(this BaseClass b)
        {
            b.Value += 1;
        }
    }
    

    但是,扩展方法不允许您向现有类添加数据。

    如果您试图实际扩展一个类,您可以这样做:

    public class BaseClass
    {
        //.. No Editable Access
    }
    
    public class Extended : BaseClass
    {
        public bool FlaggedAsDeleted { get; set; }
    }
    
    如果试图向现有类添加数据,则有两个选项:

  • 继承-如上所示

  • 封装-创建一个新对象,该对象包含要添加到的类型的实例


  • C#提供了一个名为的特性,它允许您向现有类添加方法。然而,这些实际上只是语法上的糖分,因为您仍然受限于类的公共API

    public class BaseClass
    {
        public int Value { get; set; }
    }
    
    public static class ExtensionMethods
    {
        public static void Increment(this BaseClass b)
        {
            b.Value += 1;
        }
    }
    

    但是扩展方法不允许向现有类添加数据。

    这不是唯一的。这是使用名为的设计模式解决的常见问题

    这不是唯一的。这是使用名为的设计模式解决的常见问题

    这不是唯一的。这是使用名为的设计模式解决的常见问题

    这不是唯一的。这是使用名为的设计模式解决的常见问题

    感谢您的帖子和快速回复。你提供的信息很有见地。谢谢你的帖子和快速回复。你提供的信息很有见地。谢谢你的帖子和快速回复。你提供的信息很有见地。谢谢你的帖子和快速回复。你提供的信息很有见地。