【发布时间】:2012-04-24 16:17:14
【问题描述】:
假设我有这两个对象:
public class Object1
{
string prop1;
string prop2;
}
public class Object2
{
string prop1;
int prop2;
int prop3;
}
以及以下类和方法:
public class Object1Service
{
public Object1 GetObject(Object1 o) { return o; }
public void SaveProperty2(Object1 o, string s) { o.prop2 = s; }
}
public class Object2Service
{
public Object2 GetObject(Object2 o) { return o; }
public void SaveProperty2(Object2 o, int i) { o.prop2 = i; }
}
如何把它变成一个泛型?
我最好需要一些东西,以便服务实现一个接口,并在可能的情况下调用一些通用基类。
如果这两个对象共享一个共同的父类会有帮助吗?如果是这样,它们将如何构建?
附录:
回报才是我真正的问题。
public T GetObjectByKey<T>(string key)
{
using (DBEntities db = new DBEntities())
{
try
{
T returnedEntity = default(T);
switch (EntityDictionary[typeof (T)])
// I have a dictionary setup like this dictionary<type, string>
{
case "Object1" :
returnedEntity = ( from r in db.ObjectONESets
where r.prop1 == key
select new T
{
prop1 = r.prop1,
prop2 = r.prop2
}).FirstOrDefault();
break ;
case "Object2" :
returnedEntity = ( from r in db.ObjectTWOSets
where r.prop1 == key
select new T
{
prop1 = r.prop1,
prop2 = r.prop2,
prop3 = r.prop3
}).FirstOrDefault();
break ;
}
return returnedEntity;
}
catch (NullReferenceException )
{
return default(T);
}
}
}
如果不将我所有的对象属性放在基础对象中,它就无法知道 prop1-3 是 T 的属性。
如果我确实将所有属性(通用或不通用)放在基础对象中,并且如果我需要 Object1,那么它会附加一个我不需要的 prop3。
我不确定我在这一点上是否有意义,或者我所问的是否可以使用泛型。
【问题讨论】:
-
你所说的“变成通用”是什么意思?你上课的目的是什么?
-
你刚才说的是“接口...通用基类”吗?我头疼。 ;)
-
是的,这也让我头疼。我希望它看起来像
public class ObjectService : IObjectService,并且在第一种方法内部看起来类似于public T GetObject(T o){ return base.GetObject(o); }
标签: c# generics interface ado.net