繁体   English   中英

在 c# 中设置基础 class 的属性

[英]Set the properties of a base class in c#

我有一个我认为是一个简单的菜鸟问题。

在我使用的 CMS 中,有一个方法 Product.Get(4545),它获取内置产品 class 的所有属性。

我希望以此扩展产品 class,所以我想这就是我在基本级别上要做的事情。

public class ExtendedProduct : Product
{
    public ExtendedProduct ()
    {

    }

    public string Foo { get; set; }
}

但是如何将基础产品设置为 Product.Get(4545) 的结果,以便设置所有这些属性? 我在想类似(这不起作用)base = Product.Get(4545) 或类似的东西。

class 产品实际上已经拥有 100 多个属性。 例如。

我可以打电话

var prod = Product.Get(22);
var price = prod.Price; //22.99

从下面的回复中更新我的想法,我在想

var prod = ExtendedProduct.Get(22); static method that sets the base class properties?
var price = prod.Price; //22.99
var foo  = prod.Foo

在写这篇文章时,我认为最简单的方法是将 Product 传递给 ExtendedProduct 的构造函数并拥有 Product 的属性。 但这是懒惰吗?

我希望避免我会调用new ExtendedProduct(product).Product.Price而只是调用new ExtendedProduct(product).Price

public class ExtendedProduct
{
    public ExtendedProduct (Product product)
    {
        this.Product = product;
    }
    
    public Product Product { get; internal set; }

    public string Foo { get; set; }
}

很难做到你想要的。 我建议相反。 以正常方式检索常规Product object,并根据需要使用扩展方法将其转换为扩展 object。

static class ExtensionMethods
{
    static public ExtendedProduct ToExtendedProduct(this Product source)
    {
        return new ExtendedProduct(source);
    }
}

现在你可以这样做:

var prod = Product.Get(22); 
var price = prod.Price; 
var foo  = prod.ToExtendedProduct().Foo;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM