Вы не сможете ссылаться на MyMasterPage, если не добавите его в App_Code. Обычно в такой ситуации вы создаете базовую главную страницу, которая наследуется от MasterPage. например,
public partial class MasterPageBase : System.Web.UI.MasterPage
{
// Declare the methods you want to call in Class1 as virtual
public virtual void DoSomething() { }
}
Затем в ваших реальных главных страницах вместо наследования от System.Web.UI.MasterPage наследуйте от вашей MasterPageBase. Перезапишите виртуальные методы на ваших наследующих страницах.
public partial class MyMasterPage : MasterPageBase
В Class1, где вам нужно сослаться на него (и я предполагаю, что вы получаете главную страницу из свойства MasterPage класса Page, ваш код будет выглядеть так ...
public class Class1
{
public Class1(Page Target)
{
MasterPageBase _m = (MasterPageBase)Target.MasterPage;
// And I can call my overwritten methods
_m.DoSomething();
}
}
Это довольно долгий путь, но пока единственное, что я могу придумать, это работает, учитывая модель ASP.NET.