Я начинаю в зависимости от инъекции. Я использовал Microsoft Unity в консольном приложении, чтобы начать и поднять основы. Все, что я хотел вызвать метод класса добавления или класс Substraction, основанный на регистрации класса I, для ссылки на интерфейс. Но я получаю referrce InterfaceReference как null. Пожалуйста, предложите, где я делаю неправильно в следующем случае?Как вводить зависимость, используя единство (основы)?
Я использовал один interfacer -
namespace ConsoleApplication3
{
interface IArithmetic
{
int DoOperation(int a, int b);
}
}
И 2 claess -
namespace ConsoleApplication3
{
class Addition : IArithmetic
{
public int DoOperation(int a, int b)
{
return a + b;
}
}
}
namespace ConsoleApplication3
{
class Substraction : IArithmetic
{
public int DoOperation(int a, int b)
{
return a - b;
}
}
}
namespace ConsoleApplication3
{
class Program
{
private static IArithmetic InterfaceReference;
public Program(IArithmetic InterfaceReferenceParam)
{
InterfaceReference = InterfaceReferenceParam;
}
static void Main(string[] args)
{
IUnityContainer myContainer = new UnityContainer();
myContainer.RegisterType<IArithmetic, Addition>();
int output = InterfaceReference.DoOperation(5, 2);
Console.Write(output);
Console.WriteLine();
}
}
}
thanx это сработало для меня. Однако, насколько это необходимо - myContainer.RegisterType(); потому что код работает и без этого. –
user2318170
Оставь это! Прошло некоторое время с тех пор, как я использовал Unity, и я не был уверен, нужно ли явно регистрировать программу с Unity перед использованием Resolve. Часто точка входа реализует интерфейс, и вы регистрируете реализацию интерфейса, а затем вызываете решение на интерфейсе –