次のPOCOクラスがあります
public interface IObject
{
Guid Uid { get; set; }
}
public class Boo : IObject
{
public Guid Uid { get; set; }
public String Name { get; set; }
}
public class Foo : IObject
{
public Guid Uid { get; set; }
public String Name { get; set; }
}
タイプが継承するデータベースに任意のタイプのオブジェクトを挿入する汎用メソッドを作成しようとしていますIObject
。そのために次の方法を使用しています(その下に ServiceStackOrmLite を使用):
public interface IDataAccess
{
IDbConnection GetConnection();
Boolean InsertObject<T>(T newObj, IDbConnection connection) where T : IDataObject, new();
}
各オブジェクトを個別に挿入しようとすると、次のように機能します。
public static Boolean AddFoo(this Foo foo)
{
// DataProvider is initiated using an implementation of IDataAccess
return DataProvider.InsertObject(foo, DataProvider.GetConnection());
}
質問 :
次の方法を両方の有効な方法として使用しようとしていますが、失敗します。構文が間違っていますが、疑似コードと考えてください。どうすればそれを達成できますか?obj
ボックス化Foo
またはBoo
インスタンスになります
public static Boolean AddObject(this IObject obj)
{
Type objectType = obj.GetType();
return DataProvider.InsertObject(obj as objectType, DataProvider.GetConnection());
}