好的,鉴于这里的进一步澄清是我会做的。
与 GraemeF 提出的担忧保持一致,做你想做的事是脆弱的,充其量也容易崩溃。
因此,一般做法是将设计时数据支持视为与运行时数据支持完全不同的方法。很简单,您在设计时环境和该数据库之间创建的耦合是一个坏主意。
为了简单地为可视化提供设计时数据,我更喜欢使用一个遵循公共接口的模拟类作为运行时类。这为我提供了一种显示数据的方法,我可以确保这些数据是正确的类型并且符合与我的运行时对象相同的合同。然而,这是一个完全不同的类,用于设计时支持(通常用于单元测试)。
举个例子。如果我有一个运行时类需要显示个人详细信息,例如名字、姓氏和电子邮件:
public class Person()
{
public String FirstName { get; set;}
public String LastName {get; set;}
public Email EmailAddress {get; set;}
}
我在运行时从数据库中填充这个对象,但还需要提供设计时可视化我将引入一个 IPerson 接口,该接口定义要遵守的合同,即强制属性 getter 存在:
public interface IPerson()
{
String FirstName { get; }
String LastName { get; }
Email EmailAddress { get; }
}
然后我会更新我的运行时 Person 类来实现接口:
public class Person() : IPerson
{
public String FirstName { get; set;}
public String LastName {get; set;}
public Email EmailAddress {get; set;}
}
然后我会创建一个模拟类来实现相同的接口并为设计时使用提供合理的值
public MockPerson() : IPerson
{
public String FirstName { get { return "John"; } }
public String LastName { get { return "Smith"; } }
public Email EmailAddress { get { return new Email("John@smith.com"); } }
}
然后我将实现一种机制,在设计时提供 MockPerson 对象,在运行时提供真实的 Person 对象。像这样或这样的东西。这提供了设计时数据支持,而没有运行时和设计时环境之间的硬依赖。
这种模式更加灵活,允许您在整个应用程序中提供一致的设计时数据支持。