// jQuery
$(".black-p").each(function() {
const $this = $(this);
console.log($this.attr("coin-type"))
});
// Javascript
const xclassget = document.getElementsByClassName('black-p');
for (let i = 0; i < xclassget.length; i++) {
console.log(xclassget[i].getAttribute("coin-type"));
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<article class="black-p stacard caading" coin-type="pageingx" coin-name="moonpa" coin-rank="1">
<article class="black-p stacard caading" coin-type="YYYYYYY" coin-name="XXXXXX" coin-rank="Z">
<article class="black-p stacard caading" coin-type="YYYYYYY" coin-name="XXXXXX" coin-rank="Z">
Проблема с этим состоит в том, что Ваш Автомобильный класс будет все еще иметь интерфейс, который он наследовал от Списка, который может позволить операции, которые Вы не хотите.
Я неправильно читал вопрос ранее.
Я предложил бы использовать состав вместо наследования. Если Вы хотите смочь использовать весь броский материал LINQ, любой ценой реализуйте IEnumerable<T>
и возможно ровный IList<T>
- но я не произошел бы из List<T>
непосредственно.
Если Вы действительно хотите получить материал набора "бесплатно", но все еще сохранять контроль, Вы могли использовать CollectionBase. Это все еще связывает Вас с точки зрения Вашего выстрела в наследование, но по крайней мере Вы получаете больше контроля над тем, что происходит в наборе.
Это зависит от заключительной цели Вашего класса. Если это только собирается работать Вашей собственной реализацией наследования использования набора. В противном случае включайте набор как свойство. Вторая опция более универсальна:
Если Вы хотите, чтобы Ваш Автомобильный класс действовал точно так же, как Список и имел те же методы, чем это не это плохо. Вы просто происходите из него, и Вы сделаны. Затем, если Вы хотите добавить дополнительную функциональность, можно просто объявить те методы, и Вы сделаны. Однако Вы теперь обязаны Перечислить и если Список изменяется какими-либо нежелательными способами, Вы завинчены.
Когда Вы делаете это составным классом вместо этого и инстанцировали Списка в классе затем, Вам только нужен tp, выставляют методы Списка, который Вы хотите выставленный. Но это означает, что необходимо повторить их слишком.
Если бы цель класса состоит в том, чтобы добавить дополнительную функциональность к стандартному набору, то я наследовался бы набору. Если набор является всего одной частью большего изображения, то это больше походит на свойство.
Я, однако, рассмотрел бы использование Набора <T> вместо Списка <T>, если Вам действительно не нужна функциональность в Списке <T>.
"Автомобильный" класс действительно требуется? Некоторые добавили функциональность, чем "Список"? В противном случае необходимо использовать "Список" (или лучше "IList").
Если класс "Автомобили" имеет добавленную функциональность, существует два основных сценария:
.
public class CarList<T> : List<T> where T : Car {
// some added functionality
}
Если Вы хотите, более гибки в будущем, необходимо использовать состав:
public class CarList<T> : IList<T> where T : Car {
private IList<T> innerList;
public CarList() { this.innerList = new List<T>(); }
// implementation of IList<T>
// some added functionality
}