Проверьте, имеет ли перечисление поле, которое равняется строке

Если ваш основной элемент имеет некоторые дочерние элементы или текст, вы можете использовать его.

Поместите свой основной элемент относительно (или абсолютный / фиксированный) и используйте оба: до и: после позиции абсолютного ( в моей ситуации он должен был быть абсолютным, не знаю о вашем).

Теперь, если вы хотите еще один псевдоэлемент, присоедините абсолют: до одного из детей основного элемента (если у вас есть только текст, поместите его в промежуток, теперь у вас есть элемент), который не является относительным / абсолютным / фиксированным.

Этот элемент начнет действовать, так как его владелец является вашим основным элементом.

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 */
}
16
задан Dustin 29 November 2008 в 21:48
поделиться

6 ответов

Какова причина позади AnyEquals? Вы пропускали Contains?

bool result = Enum.GetNames(typeof(FileExtensions)).Contains("mp3");
30
ответ дан 30 November 2019 в 16:25
поделиться

Можно расширить тип 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();
1
ответ дан 30 November 2019 в 16:25
поделиться

В то время как нажатие утверждает, что я думал об ответе сам:

Enum.GetNames(typeof(FileExtensions)).Any(f=>f.Equals("."+file.Extension))
8
ответ дан 30 November 2019 в 16:25
поделиться

Можно сделать это с Системой. Перечислимый тип:

string extension = Enum.GetName(typeof(FileExtensions), FileExtensions.mp3);

if (extension == file.Extension)
  // do something here

Обновление:

А-ч, я неправильно понял это, Вы хотите проверить все перечисление на расширение и не, что определенное перечисление значений соответствует расширению. В этом случае Ваш подход с GetNames () является маршрутом - извините Вы не можете отметить свой собственный ответ, как принято для Вашего собственного вопроса.;-)

0
ответ дан 30 November 2019 в 16:25
поделиться

Перечисление. 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);
1
ответ дан 30 November 2019 в 16:25
поделиться

Общее решение:

Enum.IsDefined(Type, Object)

Ваше решение:

Enum.IsDefined(typeof(FileExtentions), FileInfo)
0
ответ дан 30 November 2019 в 16:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: