Если Test
является частичным классом, у которого нет конструктора, тогда вы можете добавить конструктор Test()
в другой файл и перезаписать значение поля (инициализаторы полей запускаются перед создателем класса).Обратите внимание, что Class1
все еще будет построен, но будет отброшен.Если создание new Class1
является дешевой операцией, то нет проблем с «потерей» работы, но если new Class1
очень медленный (возможно, потому, что он читает 5 ГБ данных с диска), то это «плохо» длясделайте это.
Есть еще один замечательный трюк с частичными классами: если new Class1
не использует полностью заданные имена (имена с полным пространством имен), тогда если вы выполните
partial class Test
{
// Your Class1 (technically Test.Class1)
// that is distinct from the other Class1
public class Class1 : Interface1 { }
}
, тогдаnew Class1()
будет "указывать" на ваш Class1
, потому что разрешение имен работает именно так.