我有以下场景:
我想模拟一个界面,以便可以对我的应用程序进行单元测试。我试图不创建一个新的模拟类来实现我的接口,而是创建一个继承原始具体类的新类,并在调用该方法时使用 new 关键字强制新的行为。但由于某种原因,正在调用具体类的方法,而不是我创建的类(作为模拟)
以下代码:
public interface IMyService
{
Model GetModelData(int id)
}
public class MyService : IMyService
{
public Model GetModelData(int id)
{
//call to db
}
}
public class MyService2 : MyService
{
public MyService2()
: base(new MyRepository())
{
}
public new Model GetModelData(int id)
{
return new Model();
}
}
Run Code Online (Sandbox Code Playgroud)
注入依赖:
x.ForRequestedType<IMyService>().TheDefaultIsConcreteType<MyService2>();
Run Code Online (Sandbox Code Playgroud)
检索具体类:在调试时,我可以看到 myService 指向 MyService2 类,但该方法在 MyService 类上执行。
_myServie = ObjectFactory.GetInstance<IMyService>();
Model modelData = _myServie.GetModelData(5);
Run Code Online (Sandbox Code Playgroud) 这可能是一个简单的问题,但我正在努力解决它.
我有两个派生自基类的类
class Base
{
public int BaseProperty;
...
}
class A: Base
{
public int Property_derived;
...
}
Class B: Base
{
public int Property_derived;
...
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个UI表单,它有一个文本框,应该显示派生类的属性(我保证所有派生类的属性的数量和数据类型将是相同的)我做了类似的事情:
textbox1.text = objectA.Property_derived;
Run Code Online (Sandbox Code Playgroud)
如何更改它以使其更通用,如:
textbox1.text = objecttypedoesntmatter.Property_derived;
Run Code Online (Sandbox Code Playgroud)
这样我就可以为任何派生类使用相同的用户界面.任何帮助非常感谢.非常感谢