So beschränken Sie einen Parameter so, dass er nur Methoden akzeptiert, die yield enthalten
Posted: 04 Jan 2025, 06:38
Ich habe zwei Arten von Methoden. Einer gibt einen IEnumerator zurück, der andere gibt einen IEnumerator zurück:
Ist es möglich, zu erkennen, ob es sich bei einer Methode um die eine oder andere handelt, oder sogar die Verwendung des nicht nachgebenden Typs zu verweigern?
Ich kenne die Problemumgehungen (z. B. könnte ich einfach die nicht nachgebende Methode „Yielding“ verwenden), aber ich möchte Fehler vermeiden, deshalb war ich neugierig, ob ich das durch eine Typbeschränkung erkennen könnte.< /P>
Code: Select all
public IEnumerator NonYielding_Method( float foo )
{
return YieldingLazyEvaluated_Method(foo);
}
public IEnumerator YieldingLazyEvaluated_Method( float foo )
{
yield return null;
}
public void Queue( IEnumerator seq )
{
myList.Add(seq);
}
Code: Select all
public void Test()
{
Queue( YieldingLazyEvaluated_Method(1F) ); //works already, lazily evaluated
Queue( NonYielding_Method(1F) ); //i need this be denied by compiler error (due to it being eagerly evaluated and therefore instantly executed)
}