相关疑难解决方法(0)

C#中可能的部分泛型类型推断?

我正在为我的IoC类库重写我的流畅界面,当我重构一些代码以便通过基类共享一些常用功能时,我遇到了麻烦.

注意:这是我想要做的事情,而不是我必须做的事情.如果我必须使用不同的语法,我会,但如果有人知道如何使我的代码按我想要的方式编译,那将是非常受欢迎的.

我希望某些扩展方法可用于特定的基类,并且这些方法应该是通用的,具有一个泛型类型,与方法的参数相关,但是这些方法也应该返回与特定后代相关的特定类型.被引用.

使用代码示例比上面的描述更好.

这是一个简单而完整的例子,不起作用:

using System;

namespace ConsoleApplication16
{
    public class ParameterizedRegistrationBase { }
    public class ConcreteTypeRegistration : ParameterizedRegistrationBase
    {
        public void SomethingConcrete() { }
    }
    public class DelegateRegistration : ParameterizedRegistrationBase
    {
        public void SomethingDelegated() { }
    }

    public static class Extensions
    {
        public static ParameterizedRegistrationBase Parameter<T>(
            this ParameterizedRegistrationBase p, string name, T value)
        {
            return p;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            ConcreteTypeRegistration ct = new ConcreteTypeRegistration(); …
Run Code Online (Sandbox Code Playgroud)

c# generics fluent-interface type-inference

20
推荐指数
2
解决办法
4616
查看次数

使用约束来解决缺少部分泛型类型推断的问题

我有一个具有此成员的接口(由存储库使用):

T FindById<T, TId>(TId id)
    where T : class, IEntity<TId>
    where TId : IEquatable<TId>;
Run Code Online (Sandbox Code Playgroud)

这允许调用者指定实体类型(T)及其Id字段类型(TId).然后,此接口的实现者将查找类型的实体,T并使用该id参数根据其id(已定义IEntity<TId>)对其进行过滤.

目前我这样称呼它:

int id = 123;
var myApproval = PartsDC.FindById<Approval, int>(id);
Run Code Online (Sandbox Code Playgroud)

理想情况下我想这样做:

int id = 123;
var myApproval = PartsDC.FindById<Approval>(id);
Run Code Online (Sandbox Code Playgroud)

我已经阅读了这个问题的答案:

C#中可能的部分泛型类型推断?

我知道我不能得到我想要的语法,但可以接近.由于我的通用参数约束,我无法在我的情况下完全设置它.

这是我到目前为止所拥有的:

public class FindIdWrapper<T> where T : class
{
    public readonly IDataContext InvokeOn;

    public FindIdWrapper(IDataContext invokeOn)
    {
        InvokeOn = invokeOn;
    }

    T ById<TId>(TId id) where TId : IEquatable<TId>
    {
        return InvokeOn.FindById<T, …
Run Code Online (Sandbox Code Playgroud)

c# generics type-inference

9
推荐指数
1
解决办法
773
查看次数

标签 统计

c# ×2

generics ×2

type-inference ×2

fluent-interface ×1