我有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;
}
}
答案 0 :(得分:2)
错误可能是:
'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;
}