2010-06-17 29 views
11

Tôi đang tìm một lớp C# đại diện cho đường dẫn hệ thống tệp. Tôi muốn sử dụng nó (thay vì chuỗi) làm kiểu dữ liệu của các biến và đối số phương thức (lý do hàng đầu: loại an toàn, so sánh bằng chứng, so sánh logic).Lớp C# (không tĩnh) đại diện cho đường dẫn

  • System.IO.Path cung cấp hầu hết các chức năng tôi muốn nhưng nó tĩnh.
  • System.IO.FileInfo, như tôi hiểu, thực hiện các hoạt động IO để thực hiện công việc của mình. Tôi chỉ muốn một wrapper cho chuỗi đường dẫn.

Cảm ơn!

+0

System.IO.Path là lớp tĩnh và không trừu tượng. – Chinjoo

+0

Ai đó gần đây đã viết một khung như thế này, nếu tôi có thể tìm ra nó được gọi là gì tôi sẽ đặt nó trong một câu trả lời, cho đến khi bắt đầu Googling cho nó. :) –

+0

Tìm thấy khuôn khổ đó - FluentPath. Tôi đã thêm một câu trả lời cho hiệu ứng đó. –

Trả lời

4

Có thể là thư viện NDepend.Helpers.FileDirectoryPath là những gì bạn đang tìm kiếm.

Nó cung cấp:

  • gõ mạnh con đường File/Directory.
  • Chuyển đổi đường dẫn tương đối/tuyệt đối.
  • Đường dẫn bình thường API
  • tính hợp lệ Đường dẫn kiểm tra API
  • Đường dẫn so API
  • duyệt Đường dẫn API.
  • Đường dẫn rebasing API
  • Danh sách các hoạt động đường dẫn (TryGetCommonRootDirectory, GetListOfUniqueDirsAndUniqueFileNames, bình đẳng danh sách ...)
+0

Tôi sẽ xem xét điều này, có vẻ đầy hứa hẹn. Cảm ơn! –

+0

Đã không kết thúc bằng cách sử dụng nó vì thời gian hạn chế (không thể đủ khả năng tái cấu trúc cần thiết). Thư viện này, tuy nhiên, chính xác những gì tôi đang tìm kiếm. –

1

Vâng, những gì bạn đang yêu cầuSystem.Uri. Nhưng những gì bạn muốn để làm (hoặc chính xác hơn, những gì bạn nên làm) là sử dụng System.Path và bạn bè. Đó là những gì mọi người khác làm, và đó là những gì là chính xác và phù hợp.

1

Trước hết, System.IO.Pathstatic, không phải abstract.

Tùy thuộc vào chính xác bạn muốn làm gì, bạn có thể sử dụng System.IO.DirectoryInfo, System.Uri hoặc tạo lớp tùy chỉnh sử dụng System.IO.Path nội bộ.

0

Tạo trình bao bọc cho System.IO.Path và thêm chức năng bị thiếu vào trình bao bọc của bạn.

+0

Đương nhiên tôi có thể làm điều đó, nhưng tôi muốn tránh viết mã NIH. Đó là một vấn đề được giải quyết. –

0

System.IO.Path không phải là lớp trừu tượng, đó là lớp tĩnh; sự khác biệt là bạn có thể sử dụng phương thức tĩnh Path để thao tác các chuỗi đại diện cho đường dẫn tệp.

Bạn cũng có thể sử dụng lớp System.Uri cho một số hoạt động của đường dẫn tệp nhưng lớp đó thực sự nhắm mục tiêu URL chứ không phải tệp.

Nếu bạn muốn ưa thích, hoặc bạn cần phương pháp thao tác đường dẫn tệp của bạn được đính kèm với một cá thể cụ thể, bạn có thể viết một tập hợp các phương thức mở rộng cho lớp String thực hiện các hoạt động đường dẫn tệp bằng cách sử dụng phương thức Path.

Các vấn đề liên quan