2015-06-08 14 views
13

Tôi hoàn toàn không thể hiểu được khi nào nên sử dụng cái này hay cái khác. Chúng giống nhau đến nỗi nó làm tôi bối rối cả bây giờ và họ. Khi nói đến sự phản chiếu, tôi không biết có nên sử dụng Type hoặc TypeInfo đơn giản hay không.Sự khác biệt hoặc mối quan hệ giữa Type và TypeInfo là gì?

Khuôn khổ .NET tự thêm nhiều sự nhầm lẫn với những thứ như assembly.DefinedTypes. Nó truy xuất một số IEnumerable<TypeInfo> nơi tôi cho rằng nó sẽ là IEnumerable<Type>. Ngoài ra, còn có phương thức typeInfo.AsType(). Cái đó nghĩa là sao? chúng có hoán đổi cho nhau không?

Hơn nữa, chúng có các phương pháp thực sự giống nhau.

Dường như TypeInfo giống như phiên bản mạnh mẽ hơn của cổ điển Type. Liệu tôi có sai?

Cảm ơn!

Trả lời

9

Từ MSDN docs:

Một TypeInfo đối tượng đại diện cho định nghĩa kiểu riêng của mình, trong khi một loại đối tượng đại diện cho một tham chiếu đến các định nghĩa kiểu. Bắt một đối tượng TypeInfo buộc nhóm lắp ráp chứa loại đó để tải. Để so sánh, bạn có thể thao tác các đối tượng Kiểu mà không nhất thiết phải yêu cầu thời gian chạy để tải lắp ráp mà chúng tham chiếu.

Vì vậy, Type cung cấp đại diện cho nông dân của dữ liệu đối tượng, tức là cung cấp tên của loại dưới dạng chuỗi.

Ở đâu là TypeInfo cung cấp đại diện phong phú hơn về loại bao gồm danh sách thành viên, giao diện được triển khai và loại cơ sở.

Sự khác biệt được giải thích chi tiết hơn here.

+2

Lưu ý rằng theo https://blogs.msdn.microsoft.com/dotnet/2016/05/27/making-it-easier-to-port-to-net-core/ và http: // www. lifehacker.com.au/2016/05/microsoft-reconsiders-reflection-serialisation-changes-for-net-core/ điều này nhắm vào lõi .Net, nhưng Microsoft đã đảo ngược nó ở cuối. –

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