Я читаю какой-то код, не могли бы вы объяснить, что делает нижняя строка?Как можно вызвать метод интерфейса напрямую?
bool isFeatureEnabled = FeatureControl.Current.Features.AppDesigner.IsEnabled(organizationId,currentOrgDBVersion);
Вот определения кода выше
public sealed class FeatureControl : IFeatureControl
{
public static IFeatureControl Current { get; }
[XmlIgnore]
public IFeatureDetailContainer Features { get; set; }
....
}
public interface IFeatureControl
{
IFeatureDetailContainer Features { get; set; }
...
}
public interface IFeatureDetailContainer
{
IFeatureDetail AppDesigner { get; }
}
public interface IFeatureDetail
{
bool IsEnabled(Guid organizationId, Version currentOrgDBVersion);
}
Я не вижу каких-либо экземпляров, созданных, как это работает?
К сожалению, я скопировал метаданные, я только что нашел фактический код:
public sealed class FeatureControl : IFeatureControl
{
private static readonly Lazy<IFeatureControl> current = new Lazy<IFeatureControl>(() => new FeatureControl());
private IFeatureDetailContainer features;
public static IFeatureControl Current
{
get
{
return current.Value;
}
}
/// <summary>
/// Accessor to the Features List for Developers to retrieve the information
/// </summary>
[XmlIgnore]
public IFeatureDetailContainer Features
{
get
{
return this.features;
}
set
{
this.features = value;
}
}
}
Как мы узнаем, что экземпляр не создан в коде, который вы пропустили? – nos
'Current' помечен как' static' в 'FeatureControl.Current'. Таким образом, экземпляр может быть создан и назначен в любой части вашего другого кода. – Aruna
Возможно, вы можете проверить ** стек вызовов ** –