次の 2 つのオブジェクトがあるとします。
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; }
}
これをジェネリックにするにはどうすればよいですか?
サービスがインターフェイスを実装し、可能であればジェネリック基本クラスを呼び出すように、何かが必要になることが望ましいです。
2 つのオブジェクトが共通の親クラスを共有していると役に立ちますか? もしそうなら、それらはどのように構成されますか?
補遺:
私の本当の問題は返品です。
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 が添付されています。
この時点で十分な意味があるかどうか、または私が求めていることがジェネリックでも実行可能かどうかはわかりません。