问题描述
我有一个抽象类Enumeration,它实现了IComparable
接口。
public abstract class Enumeration : IComparable
{
[JsonConstructor]
protected Enumeration(int id,string name)
{
Id = id;
Name = name;
}
public int Id { get; }
public string Name { get; }
public static implicit operator Enumeration(string name)
{
return GetAll<Enumeration>().FirstOrDefault(i => i.Name == name);
}
public static IEnumerable<TEnumeration> GetAll<TEnumeration>() where TEnumeration : Enumeration
{
var fields = typeof(TEnumeration).GetFields(
BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly);
return fields.Select(fieldInfo => fieldInfo.GetValue(null)).Cast<TEnumeration>();
}
我创建了SampleStatus.cs
类,该类继承自Enumeration.cs
类。
public class SampleStatus : Enumeration
{
public static readonly SampleStatus Completed = new SampleStatus(1,nameof(Completed));
public static readonly SampleStatus Deleted = new SampleStatus(2,nameof(Deleted));
public SampleStatus(int id,string name) : base(id,name)
{
}
}
我为SampleStatus.cs
类创建了单元测试类。
[TestMethod]
public void TestMethod()
{
// arrange and act
var result = (Enumeration)SampleStatus.GetAll<SampleStatus>().Single(x => x.Id == 1).Name; // output is returning null.
// assert
Assert.AreEqual("Completed",result);
}
当我调用返回空值的GetAll
方法时。我在上面的代码中模拟了GetAll
和隐式运算符方法。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)