微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从静态方法调用实例方法? 如何使依赖项注入在控制台应用程序中工作

如何解决从静态方法调用实例方法? 如何使依赖项注入在控制台应用程序中工作

我具有以下 ISampleInterface 接口

public interface ISampleInterface
{
    bool sampleMethod(string _txt);
}

这样我实现的界面,

public Class SampleInterface : BaseEntity<Sample>,ISampleInterface
{
    IContext _context;

    public SampleInterface (IContext context) 
     : base(context)
    {
      _context = context;
    }

    public bool sampleMethod(string _txt)
    {
        return true;
    }
}

因此从我的主要静态方法中如何调用 sampleMethod 而不调用 SampleInterface

我的Service类紧紧围绕一个实体,即“样本”,所以我只想知道,无需调用Service类,就可以通过ISampleInterface调用方法 sampleMethod

public static void main(String[] args) 
{ 
    
} 

我面临的确切问题,我有Batchjob和Web项目,Web项目我可以通过IOC上瘾来调用方法,我也想在Batchjob中调用相同的方法,我不能这样做,因为batchjob的主要方法是静态方法

解决方法

sampleMethod是一个实例方法,因此您需要一个实例。没有一个人就无法调用它!

public static void main(String[] args) 
{ 
    var instance = new SampleInterface();
    instance.sampleMethod("some text");
}
,

在没有任何实例的情况下调用实例方法在C#中没有任何意义。

这就像要求进行不带数字的数值计算。

可能与您的上下文有关:接口必须在实例级别实现,没有诸如静态接口之类的东西。虽然并非完全不可能实现,但从设计上讲,这在C#中是不可用的。

因此,对于实例,为了确保答案的完整性:

要创建实例,请使用构造函数(由于您未定义任何构造函数,因此会隐式创建默认的公共无参数构造函数)

然后,您可以在实例上调用该方法。

var instance = new SampleInterface();
instance.someMethod("foo");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。