反射在 C# 中没有获得自定义 class
Reflection doesn't get the custom class in C#
我创建了一个方法来 return 来自任何 class 的默认字段值。我正在尝试使用 Reflection
来获取值,但它不起作用。
这里是 class 我想要的默认值 (StoredProcedure
):
namespace Services.Data.Report
{
public class PayrollReport
{
public string FullName { get; set; }
public DateTime WeekStart { get; set; }
public decimal PerDiem { get; set; }
public decimal StPay { get; set; }
public decimal OtPay { get; set; }
public decimal StraightHours { get; set; }
public decimal OverTimeHours { get; set; }
[DefaultValue("report_payrollSummary")]
public string StoredProcedure { get; set; }
}
}
我有这个方法可以让我传递 class 的名称,并希望得到所需的字段值:
namespace Services
{
public class DynamicReportService : IDynamicReportService
{
public string GetDynamicReport(string className)
{
System.Reflection.Assembly assem = typeof(DynamicReportService).Assembly;
var t = assem.GetType(className);
var storedProcedure = t?.GetField("StoredProcedure").ToString();
return storedProcedure;
}
}
}
我也试过这个,但得到了相同的结果:
var t = Type.GetType(className);
问题是 t
从未设置。
我正在尝试用这样的方式调用它:
var storedProc = _dynamicReportService.GetDynamicReport("Services.Data.Report.PayrollReport");
是否有另一种方法可以通过名称传递 Class
并能够访问字段、方法和其他属性?
试试这个:
System.Reflection.Assembly assembly = typeof(DynamicReportService).Assembly;
var type = assembly.GetType(className);
var storedProcedurePropertyInfo = type.GetProperty("StoredProcedure");
var defaultValueAttribute = storedProcedurePropertyInfo.GetCustomAttribute<DefaultValueAttribute>();
return defaultValueAttribute.Value.ToString();
首先我们将从类型中获取 StoredProcedure PropertyInfo,然后我们将使用 GetCustomAttribute<T>
扩展查找 属性 DeafultValueAttribute,最后我们将获取属性值和 return它。
我创建了一个方法来 return 来自任何 class 的默认字段值。我正在尝试使用 Reflection
来获取值,但它不起作用。
这里是 class 我想要的默认值 (StoredProcedure
):
namespace Services.Data.Report
{
public class PayrollReport
{
public string FullName { get; set; }
public DateTime WeekStart { get; set; }
public decimal PerDiem { get; set; }
public decimal StPay { get; set; }
public decimal OtPay { get; set; }
public decimal StraightHours { get; set; }
public decimal OverTimeHours { get; set; }
[DefaultValue("report_payrollSummary")]
public string StoredProcedure { get; set; }
}
}
我有这个方法可以让我传递 class 的名称,并希望得到所需的字段值:
namespace Services
{
public class DynamicReportService : IDynamicReportService
{
public string GetDynamicReport(string className)
{
System.Reflection.Assembly assem = typeof(DynamicReportService).Assembly;
var t = assem.GetType(className);
var storedProcedure = t?.GetField("StoredProcedure").ToString();
return storedProcedure;
}
}
}
我也试过这个,但得到了相同的结果:
var t = Type.GetType(className);
问题是 t
从未设置。
我正在尝试用这样的方式调用它:
var storedProc = _dynamicReportService.GetDynamicReport("Services.Data.Report.PayrollReport");
是否有另一种方法可以通过名称传递 Class
并能够访问字段、方法和其他属性?
试试这个:
System.Reflection.Assembly assembly = typeof(DynamicReportService).Assembly;
var type = assembly.GetType(className);
var storedProcedurePropertyInfo = type.GetProperty("StoredProcedure");
var defaultValueAttribute = storedProcedurePropertyInfo.GetCustomAttribute<DefaultValueAttribute>();
return defaultValueAttribute.Value.ToString();
首先我们将从类型中获取 StoredProcedure PropertyInfo,然后我们将使用 GetCustomAttribute<T>
扩展查找 属性 DeafultValueAttribute,最后我们将获取属性值和 return它。