c# - 如何使用 C# 获取基类型类的值
问题描述
下面是我的代码。我想获取 Test.Details & Test.Events 的值
public partial class Test : BaseTypes.ValidationEntityBase
{
public bool Active { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Test()
{
Events = new HashSet<Event>();
}
[Key]
[StringLength(20)]
public string ID { get; set; }
[Required()]
[StringLength(50)]
public string Details { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
[XLTargetName(null)]
public virtual ICollection<Event> Events { get; set; }
public override void AddToModel(System.Data.Entity.DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Test>().HasMany(e => e.Events).WithRequired(e => e.Test).WillCascadeOnDelete(false);
}
}
public partial class Events : BaseTypes.ValidationEntityBase
{
public Events()
{
Active = true; //DEFAULT TO ACTIVE
}
[Key()]
public string EventID { get; set; }
[Required()]
[StringLength(20)]
public string ID { get; set; }
[Required()]
[StringLength(50)]
public string EventDetails { get; set; }
[XLTargetName(null)]
[JsonIgnore]
[ScriptIgnore]
public virtual Test Test { get; set; }
public override void AddToModel(System.Data.Entity.DbModelBuilder modelBuilder)
{
}
}
public abstract class ValidationEntityBase : IValidationEntity
{
public ValidationEntityBase()
{
Valid = true;
}
public virtual void Run(CtxTest context, IValidationEntity entity)
{
}
}
public interface IValidationEntity
{
void Run(CtxTest context, IValidationEntity entity);
}
这是我的业务对象
public void RunRules(string typeCode)
{
var inputRules = Rule.FindRules(this.GetContext(), typeCode);
foreach (var rule in inputRules)
{
rule.Run<Test>(this.GetContext(), this.Test, "Sample", typeCode);
}
}
我的规则类:
public void Run<T>(CtxTest context, T entity, string sample, string typeCode) where T : class, IValidationEntity
{
var validation = this.GetExecutionType();
var execution = (IValidationEntity)Activator.CreateInstance(validation, sample);
execution.Run(context, entity);
}
每当运行规则时,它将来到下面的类,我得到所有的基本类型(测试类)值
public class Person : ValidationEntityBase
{
public Person(string msgTypeCode)
{
MESSAGE_TYPECODE = msgTypeCode;
}
public override void Run(Context.CtxTest context, IValidationEntity entity)
{
}
}
如何在运行方法中从 IValidationEntity 实体打印 Test.Details 和 Test.Events 的值,请帮助
解决方案
这似乎是最简单的答案:
public interface IValidationEntity
{
void Run(CtxTest context, IValidationEntity entity);
string Details { get; }
}
它将需要显式实现以允许您的类具有不同的实现名称(即string EventDetails
),同时仍符合IValidationEntity
接口。
推荐阅读
- ios - React Native App 未在模拟器中运行
- python - 使用for循环调用python函数我可以更改函数名中的数字吗
- javascript - 遍历 Firebase 数据库对象并分配键以响应组件
- python - 无法使用 pip 下载/安装软件包
- typescript - 如何将枚举对象存储在变量Typescript中
- python - 创建列表时,似乎 [[False] * 3] * 3 之类的表单仅复制引用?
- flutter - 在设备上升级 Flutter 调试版本(使用 VSCode)
- google-chrome - 如何在用户的浏览器(Chrome)中找出颜色主题?
- firebase - 将新创建的文档的 id 添加到数组时出现未处理的 Promise 问题
- html - 响应式画廊不工作。如何使卡片响应?