在C#中可能进行部分泛型类型推断?

在C#中可能进行部分泛型类型推断?,第1张

在C#中可能进行部分泛型类型推断

如果您只有两种特定的注册类型(这似乎是您的问题),则可以简单地实现两种扩展方法

public static DelegateRegistration Parameter<T>(    this DelegateRegistration p, string name, T value);public static ConcreteTypeRegistration Parameter<T>(    this ConcreteTypeRegistration p, string name, T value);

然后,您无需指定type参数,因此类型推断将在您提到的示例中起作用。请注意,您可以通过将委派给具有两个类型参数(问题中的一个)的单个通用扩展方法来实现这两种扩展方法。


通常,C#不支持

o.Foo<int,?>(..)
仅推断第二个类型参数的任何功能(这将是一个不错的功能-F#具有此功能,它非常有用:-))。您可能会实现一种解决方法,使您可以编写此代码(基本上是,通过将调用分为两个方法调用,以获得可以在其中应用类型推断的两个位置):

FooTrick<int>().Apply(); // where Apply is a generic method

这是一个伪代码来演示结构:

// in the original objectFooImmediateWrapper<T> FooTrick<T>() {   return new FooImmediateWrapper<T> { InvokeOn = this; } }// in the FooImmediateWrapper<T> class(...) Apply<R>(arguments) {   this.InvokeOn.Foo<T, R>(arguments);}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5009448.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-14
下一篇2022-11-14

发表评论

登录后才能评论

评论列表(0条)

    保存