0

使用以下代码在 Google Drive 帐户中插入文件时出现错误

'File' 是 'Google.Apis.Drive.v2.Data.File' 和 'System.IO.File' 之间的模糊引用

 private static File insertFile(DriveService service, String title, String description, String parentId, String mimeType, String filename)
        {
            // File's metadata.
            File body = new File();
            body.Title = title;
            body.Description = description;
            body.MimeType = mimeType;

            // Set the parent folder.
            if (!String.IsNullOrEmpty(parentId))
            {
                body.Parents = new List<ParentReference>() { new ParentReference() { Id = parentId } };
            }

            // File's content.
            byte[] byteArray = System.IO.File.ReadAllBytes(filename);
            MemoryStream stream = new MemoryStream(byteArray);

            try
            {
                FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, mimeType);
                request.Upload();

                File file = request.ResponseBody;

                // Uncomment the following line to print the File ID.
                // Console.WriteLine("File ID: " + file.Id);

                return file;
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred: " + e.Message);
                return null;
            }
        }
4

5 回答 5

3

两个命名空间 (Google.Apis.Drive.v2.DataSystem.IO) 都定义了class File,并且您可能已经将两个命名空间都“包含”在了using声明中。

您需要选择您需要的并使用完全限定名称(例如System.IO.FileGoogle.Apis.Drive.v2.Data.File取决于您的需要)。

如果您希望在编写代码时减少击键,您可以执行以下操作:

using GoogleDataAPI = Google.Apis.Drive.v2.Data;

然后使用GoogleDataAPI代替Google.Apis.Drive.v2.Data.

于 2012-10-19T09:51:03.677 回答
2

Google.Apis.Drive.v2.Data并且System.IO都定义了File类,所以使用全名 Google.Apis.Drive.v2.Data.FileSystem.IO.File

于 2012-10-19T09:56:26.017 回答
0

不要在定义中只给出文件,在定义时使用完整的命名空间

于 2012-10-19T09:56:09.093 回答
0

我有很多相同的类名,但位于不同的命名空间中。

其他答案是正确的;您可以通过使用其名称空间完全限定类来解决此问题。我更喜欢使用 using 别名。

using System.IO;
using google = Google.Apis.Drive.v2.Data;

对 System.IO.File 的任何引用都可以不加限定。任何时候你需要引用谷歌的文件类,你可以简单地使用(例如):-

var googleFile = new google.File();
于 2012-10-19T09:54:45.670 回答
0

最好的办法是限定文件类型,如果它总是在谷歌驱动器上,然后将其设置为“Google.Apis.Drive.v2.Data.File”

于 2012-10-19T09:51:13.573 回答