2013-05-30 24 views
9

Gần đây tôi đã nhận được vào C#/Azure và có một vấn đề nhỏ mà tôi muốn làm việc ra ngoài. Ứng dụng hoạt động như dự định nhưng tôi muốn cấu trúc lại một loạt các lớp vì tôi chắc chắn rằng có một giải pháp đơn giản hơn.Đúc kết quả của TableOperation.Retrieve

Tôi hiện đang có một loạt các chức năng để lấy các thực thể từ Azure mà chỉ khác nhau về Type đó được lấy ra, nhưng tối ưu Tôi chỉ muốn một lớp như vậy:

public static Object Do(string RowKey, string partitionKey, string tableName) 
{ 
    var theTable = Connect.Initialize(tableName); 
    var retrieveOperation = TableOperation.Retrieve(
             Base64.EncodeTo64(partitionKey), 
             Base64.EncodeTo64(RowKey)); 

    var retrievedResult = theTable.Execute(retrieveOperation); 

    if (retrievedResult.Result != null) { 
     return retrievedResult.Result; 
    } 
    throw new ArgumentException(
       String.Format("{0} not found in the Table", RowKey)); 
} 

này, bản thân nó , hoạt động và truy xuất các thực thể bắt buộc. Tuy nhiên, tôi không thể truyền đối tượng được trả về mà không có Lỗi.

Loại đối tượng mà tôi muốn truyền nó để triển khai TableEntity-Type và khớp với Kết quả ngoài bảng.

tôi biết rằng tôi có thể cast nó theo nghĩa

TableOperation.Retrieve<Type>(...) 

nhưng tôi thực sự muốn sử dụng một chức năng duy nhất cho mục đích này đòi hỏi tôi để cast nó trên gọi hàm.

Tôi nghi ngờ rằng vấn đề có liên quan đến thực tế là kết quả là loại DynamicTableEntity nhưng tôi khá bị mất là tại sao.

Có cách nào để giải quyết vấn đề này một cách thanh lịch không/có cách nào để thiết lập tham số chứa Loại mà tôi muốn kết quả không? (Tôi đã thử nó với "Loại ..." nhưng điều đó không hoạt động).

+3

Bạn có thử sử dụng loại Chung? Như trong: tĩnh công cộng T Do (...) { ... TableOperation.Retrieve (...) } –

+0

API này là vô lý. – Rookian

Trả lời

-4

Bạn có thể sử dụng chức năng với các loại Generic trong C#

Tham khảo this link

Bạn cũng có thể tham khảo ví dụ stackoverflow here

0

Bạn có thể thử một cái gì đó như thế này:

return (Entity)retrievedResult.Result; 

class Entity : TableEntity 
{ 
    public string PartKey => PartitionKey; 
    public string RowKey => RowKey; 
} 
Các vấn đề liên quan