Jos*_*ler 6 c# delegates interface
我有一个类需要一种方法来检索具有最大值的随机整数值.我不希望这个类依赖于检索该随机值的特定方法(例如system.random).最好是:
(A)使用公共代表(或func)
public delegate int NextRandomInt(int maxValue);
public class MyClass
{
public NextRandomInt NextRandomInt { get; set; }
public MyClass(NextRandomInt nextRandomInt)
{
NextRandomInt = nextRandomInt;
}
}
Run Code Online (Sandbox Code Playgroud)
(B)使用公共界面
public interface IRandomIntProvider
{
int NextInt(int maxValue);
}
public class MyClass
{
public IRandomIntProvider RandomIntProvider { get; set; }
public MyClass(IRandomIntProvider randomIntProvider)
{
RandomIntProvider = randomIntProvider;
}
}
Run Code Online (Sandbox Code Playgroud)
(C)其他一切都在一起.
两种方式都有效.我觉得使用委托会更简单,更快速地实现,但界面更易读,并且在依赖注入时可能更容易.