Исправление правила FxCop: перечисления должны быть строго типизированы - PullRequest
0 голосов
/ 07 февраля 2012

Я определил класс с именем StringResourceCollection. Моя Классовая Декларация выглядит следующим образом:

namespace EPGObjectModel.IDE
{
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Text;

    public class StringResourceCollection : CollectionBase, IEnumerator
    {
        #region Fields

        private int index = -1;

        #endregion Fields

        #region Properties

        public object Current
        {
            get { return this.List[index]; }
        }

        #endregion Properties

        #region Indexers

        public EPGString this[string index]
        {
            get
            {
                Reset();
                while (this.MoveNext())
                {
                    if (((EPGString)Current).StringId == index || ((EPGString)Current).StringName.Equals(index))
                        return (EPGString)Current;
                }
                return null;
            }
        }

        #endregion Indexers

        #region Methods

        public int Add(EPGString item)
        {
            try
            {
                return List.Add(item);
            }
            catch(Exception)
                {
                    throw;
                }
        }

        public void Modify(string id, EPGString resourceToModify)
        {
            EPGString stringRes = this[id];
            stringRes.DeletePermission = resourceToModify.DeletePermission;
            stringRes.ModifyPermission = resourceToModify.ModifyPermission;
            stringRes.StringInputLanguage = resourceToModify.StringInputLanguage;
            stringRes.StringLanguage = resourceToModify.StringLanguage;
            stringRes.StringName = resourceToModify.StringName;
            stringRes.StringText = resourceToModify.StringText;
        }

        public void Modify(EPGString resourceToModify)
        {
            EPGString stringRes = this[resourceToModify.StringName];
            if (stringRes == null)
                return;
            stringRes.DeletePermission = resourceToModify.DeletePermission;
            stringRes.ModifyPermission = resourceToModify.ModifyPermission;
            stringRes.StringInputLanguage = resourceToModify.StringInputLanguage;
            stringRes.StringLanguage = resourceToModify.StringLanguage;
            stringRes.StringName = resourceToModify.StringName;
            stringRes.StringText = resourceToModify.StringText;
        }

        public bool MoveNext()
        {
            this.index++;
            return (this.index < this.List.Count);
        }

        public void Remove(EPGString item)
        {
            try
            {
                List.Remove(item);
            }
            catch (ArgumentException)
            {
                throw;
            }
        }

        public void Reset()
        {
            index = -1;
        }

        #endregion Methods
    }
}

Когда я запускаю инструмент fxcop для моего кода, он показывает ошибки для «Перечисления должны быть строго напечатаны» Как я могу исправить правило FxCop: перечисления должны быть строго напечатаны в моем классе? Какие все изменения нужно сделать здесь?

1 Ответ

5 голосов
/ 07 февраля 2012

Поскольку вы реализуете коллекцию строк, вы должны реализовать

IEnumerator<string>

кроме IEnumerator

...