![](/img/trans.png)
[英]Best practice to set large amount of properties in C# base class from derived 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.