C#用泛型链接接口类



我有3个类,我需要将它们与泛型绑定。我试过这种方法,但无济于事。因为我无法访问Sp.的字段

Ch

using System;
using UnityEngine;
public abstract class Ch<C, S> : MonoBehaviour
where C : Ch<C, S>
where S : Sp<S, C>
{
public void Connect()
{
S.iii = 10;
}
}

Sp

using UnityEngine;
public abstract class Sp<S, C> : Singleton<Sp<S, C>>
where S : Sp<S, C>
where C : Ch<C, S>
{
public static int iii = 0;
}

UPD。如果我将代码转换为以下形式。我会得到一个错误"Ch类型不能用作泛型类型Up中的类型参数C。从Ch到Ch>>没有隐含的参考对话">

using UnityEngine;
public abstract class Sp<C> : Singleton<Sp<C>>
where C : Ch<Sp<C>>
{
public static int i = 0;

}

using System;
using UnityEngine;
public abstract class Ch<S> : MonoBehaviour
where S : Sp<Ch<S>>
{
public void Connect()
{
S.iii = 10;
}
}

错误可能是:

'S'是一个类型参数,在给定的上下文中无效

不能执行S.iii = 10;,必须是Sp<S, C>.iii = 10;

这编译:

public abstract class Ch<C, S>
where C : Ch<C, S>
where S : Sp<S, C>
{
public void Connect()
{
Sp<S, C>.iii = 10;
}
}
public abstract class Sp<S, C> : Singleton<Sp<S, C>>
where S : Sp<S, C>
where C : Ch<C, S>
{
public static int iii = 0;
}

最新更新