0
我有一個類的框架。每個類代表一些實體,並具有基本的靜態方法:添加,獲取,更新和刪除。如何開發對某些實體具有相同功能的方法?
此方法使靜態,因爲我想允許執行某些操作而不實例化的對象。 例如,要添加一些對象,我必須這樣做:Foo.Add(foo)。
現在我想要從另一個框架爲每個類調用一些方法。但是這個方法的功能是一樣的:例如我想檢查對象是否存在,如果不存在 - 創建,否則 - 更新。
實現它的最佳方法是什麼? (根據構思把所有的代碼在一個地方)
public void DoSomethingWithFoo(Foo foo)
{
if (Foo.Get(foo.id) != null)
Foo.Update(foo);
else
Foo.Add(foo);
}
public void DoSomethingWithBar(Bar bar)
{
if (Bar.Get(bar.id) != null)
Bar.Update(bar);
else
Bar.Add(bar);
}
還是更給它使用InvokeMember做:
應該怎麼做它用這種方式爲每個類:
如?
例如爲:
public void DoSomethingWithFoo(Foo foo)
{
DoSomethingWithObject(foo);
}
private void DoSomethingWithObject(object obj)
{
Type type = obj.GetType();
object[] args = {type.GetProperty("ID").GetValue(obj, null)};
object[] args2 = { obj };
if (type.InvokeMember("Get", BindingFlags.Default | BindingFlags.InvokeMethod, null, null, args) != null)
{
type.InvokeMember("Update", BindingFlags.Default | BindingFlags.InvokeMethod, null, null, args2);
}
else
{
type.InvokeMember("Add", BindingFlags.Default | BindingFlags.InvokeMethod, null, null, args2);
}
}
哪種方法更好,更清潔?或者,也許你會建議另一種方法?
謝謝
其實我已經在使用NHibernate來達到這個目的。但問題是如何組織這些訪問位於主框架中的對象的方法(與前面描述的功能相同)?所以我們從另一個庫的框架訪問對象。 – 2009-08-17 10:13:59
對。那麼我已經描述過了。 – 2009-08-17 10:18:12