【发布时间】:2015-09-04 15:51:18
【问题描述】:
这是一个有点棘手的问题,我不知道是否可能。
假设我有一个类Foo1,它在一个DLL 中,我不能修改它。该类如下所示:
public class Foo1<T1> : IFoo<T1>
{
public Foo1(Func<IFoo, T1, T1> postRead);
}
我想继承Foo1 并能够在原始postRead 中注入T2 对象并在基础postRead 中访问它。
类似这样的:
public class Foo2<T1, T2> : Foo<T1>
{
public Foo2(Func<IFoo, T1, T2, T1> newPostRead)
:base(Func<IFoo, T1, T1> secondPostRead)
{
}
}
有可能吗?
编辑: 我正在使用insight DB。这是一个ORM。有做后期处理的功能。代码如下所示:
public class PostProcessRecordReader<T> : RecordReader<T>
{
public PostProcessRecordReader(Func<IDataReader, T, T> postRead);
}
//How to use the processor
public DummyFunction(ObjectIWantToUse objectIwantToUse)
{
PostProcessRecordReader<Foo> _postProcessorForCubeWithAllEntitiesForBuilding = new PostProcessRecordReader<Foo> (reader, obj) =>
{
//Need to have access objectIwantToUse !!!
//maybe I want to modify obj or add some stuff to it
}
);
//Do some stuff by using _postProcessorForCubeWithAllEntitiesForBuilding
}
我们可以通过直接访问读取器对从数据库返回的对象进行一些处理。
【问题讨论】:
-
很难知道你想用额外的参数做什么......你能举一个具体的例子吗?
-
答案可能是肯定的,但您需要提供一条额外的信息:新引入的
T2会发生什么? -
请提供实际编译的代码
-
我编辑了我的问题。
标签: c# templates inheritance func insight.database