我正在使用ADO.NET EF
和Repository pattern
。我想分离一些我的一些实体常见的逻辑,我决定最好的方法是使用泛型方法。这是我的方法的声明:
internal static void ChangeCode<T>(IService<T> service, Entity entity, MaskedTextBox txtBox, string newCode, long? entityId)
where T : Common.DbContextEntities.Entity
IService<T>
是派生所有服务的基类,Entity
是派生所有实体的基类形式。但是在运行时,我传递了更具体的服务和实体,例如SoleService
and Sole
。我想要完成的是以某种方式声明运行时类型service
和entity
从整个方法中可见的那些属性。在这里说清楚是我现在要做的:
if (entity.GetType() == typeof(Sole))
{
Sole tempEntity = new Sole();
ISoleService tempService = UnityDependencyResolver.Instance.GetService<ISoleService>();
问题是我只能在范围内使用tempEntity
,并且如果我必须检查几种类型(实际上就是这种情况),我必须为每种不同类型重复所有业务逻辑。我正在寻找一种方法来设置并在运行时以特定的方式在方法中的任何地方使用它们。tempService
if (entity.GetType() == typeof(Sole))
tempEntity
tempService