接口:
public interface IAbstraceCar
{
decimal CalculateStockValue();
}类1:
class ShoppingCart : IAbstraceCar
{
protected IValueCalculator calculator;
protected Product[] products; public ShoppingCart(IValueCalculator calcParam)
{
calculator = calcParam;
} public virtual decimal CalculateStockValue()
{
products = new [] {
new Product() { Name = "Kayak", Price = 275M},
new Product() { Name = "Lifejacket", Price = 48.95M},
new Product() { Name = "Soccer ball", Price = 19.50M},
new Product() { Name = "Stadium", Price = 79500M}
};
decimal totalValue = calculator.ValueProducts(products);
return totalValue;
}
}
类2:
class LimitShoppingCart:ShoppingCart
{
public decimal ItemLimit { get; set; } public LimitShoppingCart(IValueCalculator calcParam)
: base(calcParam)
{
} public override decimal CalculateStockValue()
{
Product[] products = {
new Product() { Name = "Kayak", Price = 275M},
new Product() { Name = "Lifejacket", Price = 48.95M},
new Product() { Name = "Soccer ball", Price = 19.50M},
new Product() { Name = "Stadium", Price = 79500M}
};
var filteredProducts = products.Where(e => e.Price < ItemLimit);
return calculator.ValueProducts(filteredProducts.ToArray());
}
}MVC中调用:
public class ProductController : Controller
{
//
// GET: /Product/ private IAbstraceCar _sc; public ProductController(IAbstraceCar sc)
{
this._sc = sc;
}
}请问怎样可以在MVC里指定调用ShoppingCart 或者 LimitShoppingCart,因为它们都是继承同一接口,望高手指点
public interface IAbstraceCar
{
decimal CalculateStockValue();
}类1:
class ShoppingCart : IAbstraceCar
{
protected IValueCalculator calculator;
protected Product[] products; public ShoppingCart(IValueCalculator calcParam)
{
calculator = calcParam;
} public virtual decimal CalculateStockValue()
{
products = new [] {
new Product() { Name = "Kayak", Price = 275M},
new Product() { Name = "Lifejacket", Price = 48.95M},
new Product() { Name = "Soccer ball", Price = 19.50M},
new Product() { Name = "Stadium", Price = 79500M}
};
decimal totalValue = calculator.ValueProducts(products);
return totalValue;
}
}
类2:
class LimitShoppingCart:ShoppingCart
{
public decimal ItemLimit { get; set; } public LimitShoppingCart(IValueCalculator calcParam)
: base(calcParam)
{
} public override decimal CalculateStockValue()
{
Product[] products = {
new Product() { Name = "Kayak", Price = 275M},
new Product() { Name = "Lifejacket", Price = 48.95M},
new Product() { Name = "Soccer ball", Price = 19.50M},
new Product() { Name = "Stadium", Price = 79500M}
};
var filteredProducts = products.Where(e => e.Price < ItemLimit);
return calculator.ValueProducts(filteredProducts.ToArray());
}
}MVC中调用:
public class ProductController : Controller
{
//
// GET: /Product/ private IAbstraceCar _sc; public ProductController(IAbstraceCar sc)
{
this._sc = sc;
}
}请问怎样可以在MVC里指定调用ShoppingCart 或者 LimitShoppingCart,因为它们都是继承同一接口,望高手指点
new ProductController(new LimitShoppingCart())//sc指向LimitShoppingCart
builder.RegisterType<LimitShoppingCart>().As<IAbstraceCar>().InstancePerHttpRequest();
builder.RegisterType<ShoppingCart>().As<IAbstraceCar>().InstancePerHttpRequest().PreserveExistingDefaults();MVC中老是只运行LimitShoppingCart,我想我怎样可以自由的选择要运行LimitShoppingCart或者ShoppingCart
{
public ISinger Singer { get; set; } public Stage(ISinger singer)
{
this.Singer = singer;
}
} class Program
{
static void Main(string[] args)
{
var builder = new ContainerBuilder();
builder.RegisterType<MizukiNana>().Named<ISinger>("nana");
builder.RegisterType<ShimotsukiHaruka>().Named<ISinger>("haruka");
builder.Register(c => new Stage(c.ResolveNamed<ISinger>("nana")));
var container = builder.Build(); var stage = container.Resolve<Stage>();
Console.WriteLine(stage.Singer.ToString());
}
}
MVC中调用:
public class ProductController : Controller
{
//
// GET: /Product/ private IAbstraceCar _sc; public ProductController(IAbstraceCar sc)
{
this._sc = sc;
}
}我在global里用Name的方式注册了,运行后会报错,说找不到指定的类型
这一步有了吗