Название может быть немного расплывчатым, но я хочу достичь этого, но затем без использования дополнительной лямбды в методе создания:
public class Wrapper
{
public static Wrapper Create<T>(Func<T, bool> someFunc) where T : Stream
{
return new Wrapper(a => someFunc(a as T)); // Works, but lambda
return new Wrapper((Func<Stream, bool>)(object)someFunc); // Runtime error
return new Wrapper((Func<Stream, bool>)someFunc); // Compile error
}
Func<Stream, bool> _someFunc;
private Wrapper(Func<Stream, bool> someFunc)
{
_someFunc = someFunc;
}
}
Возможно ли это сделать, если да, то как?
РЕДАКТИРОВАТЬ: класс потока только в качестве примера.
В моем коде я не буду использовать потоковый класс, а также почему тип-параметр, потому что он возвращается из универсального метода, который является методом расширения.
Кроме того, вызов всегда будет безопасным по типу, я хотел сделать сам класс Wrapper родовым, но тогда он не сможет добавить его в универсальные коллекции, потому что они будут иметь разные параметры типа.