这个C#通用代码可以简化,只传入一种类型吗?

Sam*_*tar 4 c# c#-3.0 c#-4.0

以下代码来自我的队友:

 public T Get<T, V>(V repo, string pk, string rk)
            where T : Microsoft.WindowsAzure.StorageClient.TableServiceEntity
            where V : IAzureTable<T>
        {
            try
            {
                var item = repo.GetPkRk(pk, rk);
                if (item == null) throw new Exception(); return (T)item;
            }
            catch (Exception ex)
            {
                _ex.Errors.Add("", typeof(T).Name + rk + " does not exist");
                throw _ex;
            }

        }
Run Code Online (Sandbox Code Playgroud)

来电代码:

var account = base.Get<Account, IAzureTable<Account>>(_accountRepository, pk, rk);
Run Code Online (Sandbox Code Playgroud)

可以简化吗?这里唯一的类型变量是"帐户",我想知道T和V类型是否可以组合成一个,因为V仅依赖于T.

Dam*_*ver 5

由于唯一V出现的地方是签名,我原以为你可以把它改成:

public T Get<T>(IAzureTable<T> repo, string pk, string rk)
        where T : Microsoft.WindowsAzure.StorageClient.TableServiceEntity
Run Code Online (Sandbox Code Playgroud)

但我没有方便的示例代码来测试这个.