От самих интерфейсов вы не можете вызывать события, так как интерфейсы не могут содержать код, только контракты.Если вы хотите обмениваться данными между объектами, которые реализуют IOne и ITwo, лучший способ, действительно, состоит в том, чтобы добавить приемник событий и зарегистрировать это событие в любой из реализаций.только интерфейсы.
Редактировать
Вы тем временем редактировали свой вопрос.Что такое Mock<T>
для вас?Вы не можете разыграть от ITwo
до Mock<T>
.Обратное может быть возможным, если Mock<T>
наследуется от ITwo
.
Примечание. Возможно, пример со словами, отличными от Первого и Второго, может помочь нам понять, что вы действительно после?* Пример кода Ответ только на «Как вызвать событие на ITwo, когда у меня есть только ссылка на IOne или Mock» , надеюсь, я немного понимаю, что выпосле:
interface IOne
{
void RaiseEventITwo();
ITwo Two { get; set;}
}
// note: left out some details
class One : IOne
{
public One() { this.Two = new Two(); } // Two implements ITwo
public void RaiseEventITwo()
{
this.Two.OnLoadPage(); // i.e.: some event of ITwo is OnLoadPage
}
}
// somewhere where you actually have the reference you speak off
IOne one = new One(); // class One implements IOne
one.RaiseEventITwo();
// using the Mock<T> class:
Mock<IOne> mockOne = new Mock<IOne>();
mockOne.GetIOne().RaiseEventITwo(); // GetIOne needs to be implemented in
// Mock<T> or as extension for Mock<T>