【问题标题】:Dynamic property in c# depending on enum valuec# 中的动态属性取决于枚举值
【发布时间】:2022-01-20 03:07:23
【问题描述】:

我正在尝试根据类的枚举属性在类中动态创建属性。

例如,我有一类会议,它有一个位置枚举,如果选择一个位置,则位置详细信息应该不同,例如,如果选择 Inperson,则位置详细信息应该是地址类型的类,否则如果位置选择缩放的细节应该只是一个带有 url 的字符串

public enum Meeting_Location
{
InPerson,
Zoom,
GoogleMeet
}

public class Meeting
{
public string Name;
public Meeting_Location Location;
public ... Location_Details; --> this is dynamic depending on the enum that is selected
}

public class Address
{
public string postcode;
public string country;
public string StreetName;
....

}

【问题讨论】:

  • 具有派生特定类的基本位置类型?
  • 那么如果在这种情况下选择Zoom 会发生什么Location_Details 以及在GoogleMeet 的情况下会是什么Location_Details

标签: c# .net asp.net-core .net-core


【解决方案1】:

在这种情况下,我不建议您使用枚举来告知会议的类型。相反,您应该使用多态性。让课堂本身成为会议的类型。

public abstract class Meeting
{
    public string Name { get; set; }
}

public class InPersonMeeting : Meeting
{
    public Address Location { get; set; }
}

public class ZoomMeeting : Meeting
{
    public string Link { get; set; }
}

【讨论】:

  • 这是有道理的,但是我如何在实体框架中配置它,因为我只想为所有类型的会议提供一个表
猜你喜欢
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 2010-12-20
  • 2011-02-16
相关资源
最近更新 更多