我要说的是:
public class Transformer<T, TResult>
where T : IMessage
where TResult : IMessage
{
private Func<T, IEnumerable<TResult>> _transformer;
public Transformer(Func<T, TResult> transformer)
{
_transformer = null // ?
}
public Transformer(Func<T, IEnumerable<TResult>> transformer)
{
_transformer = transformer;
}
}
因此,从本质上讲,我要将<代码>Func<T, TResult>改为
I ve试图创建一种私人内部班级,该班采用Func<T, TResult>
,并界定了一种能够使IE获得如此数字的方法:
private class TransformerWrapper
{
private readonly Func<T, TResult> _func;
public TransformerWrapper(Func<T, TResult> func)
{
_func = func;
}
public IEnumerable<TResult> Transform<T>(T message) where T : IMessage
{
yield return _func(message);
}
}
但它并未真正发挥作用。 我犯了一个错误,说代表有了一个无效的论点——不能从T改为T。
首先,汇编者错误发生什么,其次,又是另一种方式?
<>Update>
会后记录 我在座,找到了解决办法:
public Transformer(Func<T, TResult> transformer)
{
_transformer = new TransformerWrapper<T, TResult>(transformer).Transform;
}
而且,
private class TransformerWrapper<T, TResult>
{
private readonly Func<T, TResult> _func;
public TransformerWrapper(Func<T, TResult> func)
{
_func = func;
}
public IEnumerable<TResult> Transform(T message)
{
yield return _func(message);
}
}
我仍然可以谈谈第一个解决办法为什么不起作用。 我需要考虑这一点......