Не содержит определения или метода расширения

#c# #.net #compiler-errors

#c# #.net #ошибки компилятора

Вопрос:

Я получаю следующую ошибку при попытке сборки:

Не содержит определения или метода расширения

У меня есть класс, подобный этому:

 [Serializable]    
public class JobFile
{
    private FileInfo mFileInfo;
    private string mJobNumber = string.Empty;
    private string mBaseJobNumber = string.Empty;
    private Guid mDocumentTytpeid = Guid.Empty;

    public string DocumentTypeDescription
    {
        get
        {
            string description;   
            DocumentType DocType;
            DocType = DocumentType.GetDocType(DocumentTypeCode);          
            if (DocType.Code == null)                    
                description = "Unknown";
            else                  
                description = DocType.Description;                   
            return description;
        }
    }

    public Guid DocumentTypeID
    {
        get
        {              
            DocumentType DocType;
            DocType = DocumentType.GetDocType(DocumentTypeCode);
            if (DocType.Code == null)
                mDocumentTytpeid = Guid.Empty;                  
            else
                mDocumentTytpeid = DocType.Id;
            return mDocumentTytpeid;
        }
    }
  

Теперь я пытаюсь получить значение Documenttypeid в моем другом классе следующим образом:

 foreach (FileInfo fi in files)
{
    JobFile jf = null;
    jf = new JobFile(ref fi);
    f.DocumentTypeId = jf.DocumentTypeID; //<-- error is here
}
  

Кто-нибудь знает, что может быть не так и как это исправить?
Спасибо.

Комментарии:

1. в f.DocumentTypeId , какой тип f ?

2. Где f объявлено в цикле? Разве это не должно быть fi ?

3. Пожалуйста, опубликуйте полный текст ошибки. И отформатируйте свой код самостоятельно, он был нечитаемым.

4. Извините, F — это определение другого класса с именем file.cs Я хочу установить, что Documenttypeid = независимо от jf.documentypeid.

5. Нам нужно увидеть этот file.cs с определением типа, которому соответствует F.

Ответ №1:

В сообщении об ошибке очень ясно указано, что не так. Вы пытаетесь использовать свойство, которое не существует, и видите, как ошибка возникает в этой строке:

 f.DocumentTypeId = jf.DocumentTypeID;
  

Это может быть только одна из двух вещей:

  1. f не существует
  2. f.DocumentTypeId не существует.
  3. jf.DocumentTypeID не существует

Честно говоря, я бы проверил, чтобы убедиться, что этого f.DocumentTypeId не должно быть f.DocumentTypeID . C # придирчив к подобным вещам, и небольшая ошибка, подобная этой, может вызвать ошибку, которую вы получаете.

Ответ №2:

Проблема в f.DocumentTypeId .

Предполагая, что это также JobFile , это будет f.DocumentTypeID (обратите внимание на идентификатор, а не на Id). C # чувствителен к регистру. Кроме того, существует только средство доступа к get свойству, а не set .


Если f это какой-то другой тип, покажите нам код.

Комментарии:

1. Спасибо, f на самом деле другой класс, извините, я не вставил эту часть туда, я пытался быть кратким. Я устанавливаю переменные в классе file.cs (f), чтобы выполнить вставку там.

2. Если тип f является JobFile , то мой ответ должен решить вашу проблему.

3. его не f имеет тип file ( Library.File. Файл f = новая библиотека.File. File();)

4. Компилятор сообщает вам, что Library.File.File не содержит определения для DocumentTypeId . Не зная, что вы ожидаете, и не зная, каково определение Library.File.File , мы не можем помочь дальше.

5. @ElPollo: Я согласен с Джорджем. Ошибка очень понятна; свойство, которое вы пытаетесь получить или установить, не существует.