表示對象的n個SQL語句中的聯接返回多個建模對象中的結果,我想了一個辦法,他們模型和在一個對象
class JoinObjectsMapper
{
//add 2 fields one for the PK value and one for the name of the PK
internal readonly Dictionary<Type, object> Objs;
public JoinObjectsMapper(params object[] objs)
{
Objs = new Dictionary<Type, object>();
foreach(var o in objs)
{
Objs[o.GetType()] = o;
}
}
public object this[Type key]
{
get { return Objs[key]; }
set { Objs[key] = key; }
}
}
使用例子上來:
var custmer = new Customer { customer_id = 1, customer_name = "zxc" };
var order = new Order { order_id = 1, customer_id = 1, order_amount = 200.30m };
var mapper = new JoinObjectsMapper(custmer, order);
var cus = mapper[typeof(Customer)] as Customer;
var order = mapper[typeof(Order)] as Order;
這是工作,除了我不喜歡的事實,我必須在檢索它後,對象,如果我使用泛型然後它不會工作的n個對象,除非我寫了這麼多重載據我所知。
任何想法如何找回我的對象作爲
var cus = mapper[typeof(Customer)];
var order = mapper[typeof(Order)];
或者
var cus = mapper.Ref<Customer>();
var order = mapper.Ref<Order>();
,仍然可以得到正確的類型,並避免鑄造?
你不能。爲了避免強制轉換,您需要在編譯時瞭解對象的類型。 – phoog
你不喜歡演員的運行時間影響,或不必寫出來? – James
@詹姆斯不得不把它寫出來 – user1492051