public abstract class ProductDtoBase<T> where T : PriceDto
{
public int Id { get; set; }
public string Name { get; set; }
public virtual List<T> Prices { get; set; }
}
public class ProductDto : ProductDtoBase<PriceDto>
{
}
public class ProductVm : ProductDtoBase<PriceVm>
{
}
public abstract class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public abstract int GetShopPrice(City city);
}
public sealed class SimpleProduct : Product
{
public override int GetShopPrice(City city)
{
//логика
}
}
public sealed class ModuleProduct : Product
{
public override int GetShopPrice(City city)
{
//логика
}
}
// передача this
getData: function (urlData) {
$.ajax({
url: url,
success: this.render.bind(this)
});
},
// или же сохранение ссылки на this в переменной
getData: function (urlData) {
var self = this;
$.ajax({
url: url,
success: function (result) {
self.render(result);
}
});
},
render: function (data) {
//
}
var Collection = (function () {
var
url = '/Management/NestablePartical/',
el = '.dd';
function getData() {
$.get(url, function(response) {
render(response)
});
}
function render(data) { /* ... */ }
function event() { /* ... */ }
function init() { /* ... */ }
return {
// возвращаем только те методы, которые нужны вне модуля
init: init,
getData: getData
}
})();