我来自 Objective-C 背景,我正在编写一些包含委托的 VB.NET。我有一个Worker
执行某些任务的类。此类的属性之一是一个ILogger
对象,它具有附加到某个日志文件的方法。(我希望我的Worker
对象与日志记录分离,这将由我的 GUI 处理。)在 Objective-C 中,我可以声明
@property (nonatomic, strong) id<LoggingDelegate> logger;
然后在我的代码上撒上类似的行
[logger appendToLog:@"Beginning polarity reversal..."];
在 Objective-C 中,logger
实际上不需要将其设置为对象即可。如果它是一个空引用(Objective-C 中的“nil”),appendToLog:
则运行时会默默地忽略该消息。
在 VB.NET 中,我可以做类似的事情:
Public Property logger As ILogger
和
logger.AppendText("Beginning polarity reversal...")
但当然,logger
实际上需要设置为一个对象才能使其工作。处理我的工作人员没有附加记录器对象的情况的惯用方法是什么?(更一般地说,我在 VB.NET 中实现的委托模式是惯用的吗?)