我有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;
}