Если ваш основной элемент имеет некоторые дочерние элементы или текст, вы можете использовать его.
Поместите свой основной элемент относительно (или абсолютный / фиксированный) и используйте оба: до и: после позиции абсолютного ( в моей ситуации он должен был быть абсолютным, не знаю о вашем).
Теперь, если вы хотите еще один псевдоэлемент, присоедините абсолют: до одного из детей основного элемента (если у вас есть только текст, поместите его в промежуток, теперь у вас есть элемент), который не является относительным / абсолютным / фиксированным.
Этот элемент начнет действовать, так как его владелец является вашим основным элементом.
HTML
<div class="circle">
<span>Some text</span>
</div>
CSS
.circle {
position: relative; /* or absolute/fixed */
}
.circle:before {
position: absolute;
content: "";
/* more styles: width, height, etc */
}
.circle:after {
position: absolute;
content: "";
/* more styles: width, height, etc */
}
.circle span {
/* not relative/absolute/fixed */
}
.circle span:before {
position: absolute;
content: "";
/* more styles: width, height, etc */
}
Какова причина позади Any
… Equals
? Вы пропускали Contains
?
bool result = Enum.GetNames(typeof(FileExtensions)).Contains("mp3");
Можно расширить тип FileInfo с помощью следующего дополнительного метода:
public static bool HasExtension(this FileInfo file)
{
var ext = file.Extension.StartsWith(".") ? file.Extension.Substring(1)
: file.Extension;
return Enum.GetNames(typeof(FileExtensions))
.Any(f => f.Equals(ext));
}
и используйте его как:
bool hasExtension = file.HasExtension();
В то время как нажатие утверждает, что я думал об ответе сам:
Enum.GetNames(typeof(FileExtensions)).Any(f=>f.Equals("."+file.Extension))
Можно сделать это с Системой. Перечислимый тип:
string extension = Enum.GetName(typeof(FileExtensions), FileExtensions.mp3);
if (extension == file.Extension)
// do something here
Обновление:
А-ч, я неправильно понял это, Вы хотите проверить все перечисление на расширение и не, что определенное перечисление значений соответствует расширению. В этом случае Ваш подход с GetNames () является маршрутом - извините Вы не можете отметить свой собственный ответ, как принято для Вашего собственного вопроса.;-)
Перечисление. IsDefined возьмет строку, содержащую название перечисления значений. Единственное уродство - то, что необходимо снять изоляцию с ведущего периода Файла. Расширение и это чувствительны к регистру:
Enum.IsDefined(typeof(FileExtension), file.Extension.Substring(1).ToLower())
Править: Дополнительное совершенство метода для нахождения рядом с желаемым синтаксисом:
IEnumerable<string> GetNames(this Type t) {
if (!t.IsEnum) throw new ArgumentException();
return Enum.GetNames(t);
}
typeof(FileExtensions).GetNames().Any(e=>e.ToString().Equals(file.Extension));
Лично, тем не менее, я быть все еще бы маршрут IsDefined:
bool IsDefined(this Type t, string name) {
if (!t.IsEnum) throw new ArgumentException();
return Enum.IsDefined(t, name);
}
typeof(FileExtension).IsDefined(file.Extension);
Общее решение:
Enum.IsDefined(Type, Object)
Ваше решение:
Enum.IsDefined(typeof(FileExtentions), FileInfo)