如何修复“找不到类型或名称空间的TTransactionKey”错误

时间:2019-02-09 21:25:52

标签: c#

我正在构建一个需要泛型的类,但是尽管我以前使用过泛型,但仍找不到。

public class Bank<TClient, TAbstractAccount, TTransaction> : AbstractBank<TClient, TAbstractAccount, TTransaction>
     where TClient : Client<TTransactionKey, TAccountKey, TAccountEntity, TTransaction>

       //where TAbstractAccount : AbstractAccount<TClientKey, TTransactionEntity, TAccountKey, TTransactionKey>

    {
    public Bank(string bankName, int swiftCode) : base(bankName, swiftCode)
    {
        Agents = 1;
    }

    public override void AddTransaction(TTransaction transaction)
    {
        if (Agents > 0)
        {
            lock (TransactionsQueue)
            {
                TransactionsQueue.Enqueue(transaction);
                   // TAbstractAccount source = 

            }
        }
    }

enter image description here

1 个答案:

答案 0 :(得分:0)

可用于泛型类声明的类型参数约束中的类型参数是泛型类及其封闭类类型的类型参数的子集。

例如

class Foo<T1,T2,T3> where T1: Bar<T4> 

是非法的,因为T4不是Foo的类型参数。但是

class Foo<T1, T2, T3, T4> where T1 : Bar<T4>

是合法的。还有

class Baz<T4>
{
    class Foo<T1, T2, T3> where T1 : Bar<T4>
    {

    }
}

是合法的。