我一直在尝试学习依赖注入,但是在运行代码时遇到两个错误:DependencyInjection.Message.Sms()
必须声明一个主体,因为它没有被标记为抽象,外部或局部。
无法将类型DependencyInjection.IInterface
隐式转换为DependencyInjection.MyClass
。存在显式转换(您是否缺少演员表?)
下面的代码是否是DI的良好设计?
namespace DependencyInjection
{
public interface IInterface
{
}
public abstract class Message
{
public virtual void Sms();
}
public class MyClass : Message, IInterface
{
public override void Sms()
{
Console.WriteLine("Sms gönder.");
}
}
public class ClassManager
{
private IInterface _myinterface;
public MyClass Xyz
{
get { return _myinterface; }
set { _myinterface = value; }
}
public ClassManager(IInterface myinterface)
{
_myinterface = myinterface;
}
}
}
最佳答案
1)DependencyInjection.Message.Sms()'必须声明一个主体,因为它没有被标记为抽象,外部或部分
将abstract
关键字(并删除虚拟的)添加到方法声明中:
public abstract void Sms();
2)无法将类型'DependencyInjection.IInterface'隐式转换为'DependencyInjection.MyClass'。存在显式转换(您是否缺少演员表?)
private IInterface _myinterface;
public MyClass Xyz
{
get { return _myinterface; }
set { _myinterface = value; }
}
Xyz
具有类型为MyClass
的返回类型,但是在get
中您将返回类型为_myinterface
的IInterface
。更改为以下内容:
public IInterface Xyz
{
get { return _myinterface; }
set { _myinterface = value; }
}