我是在一个框架内工作的,在这个框架内,你可以做以下工作:
IMyClass instance = Session.GetAllObjectsOfType("IMyClass")[0];
ILock lock = instance as ILock;
if(lock != null)
{
lock.Lock();
instance.DoSomething();
lock.Unlock();
}
ISaveable saveable = instance as ISaveable;
if(saveable != null)
saveable.save();为了让这件事起作用
class MyClass : IMyClass, ISaveable, ILock
{
}实际上,我有一些类似于8-15个接口的东西,我需要实现它们,它们需要通过转换主对象来访问。实现这一点的最干净的方法是什么?我观察了正面的模式,但我认为这不能在这里使用。
发布于 2016-11-08 11:29:31
根据你的评论:
我希望有一个比显而易见的更好的方法。在实现不同的接口时会有大量的代码,而ILock接口并不需要真正了解ISavebale的功能。我基本上是在寻找一种干净的方法来完成这个任务,它不会导致一个类有5k行代码和200个公共函数。
如果您想要一个类来实现这个接口,那么这个类将需要继承这个接口,但是功能可以被注入和包装(也就是Facade)。
这将是实现ISaveable、ILock等通用但独立的代码类目标的最干净的方法。
例如:
public MyClass : IMyClass, ISaveable, ILock
{
private readonly ISaveable _saveableImplementation;
private readonly ILock _lockImplementation;
public MyClass(ISaveable saveableImplementation, ILock lockImplementation)
{
_saveableImplementation = saveableImplementation;
_lockImplementation - lockImplementation;
}
public void ISaveable.Save()
{
_saveableImplementation.Save();
}
public void ILock.Lock()
{
_lockImplementation.Lock();
}
}https://stackoverflow.com/questions/40485402
复制相似问题