我正在重构一些旧代码。现在我面临的问题之一是
AllFields.Add(SomeProperty = new IntField
{
ColumnName = "SomeProperty",
DisplayName = "Some Property",
IsEditable = false,
IsRequired = true
});
现在我想要的是某种类似于扩展方法的东西,该方法需要分配
SomeProperty = new IntField()
作为参数
e..g
public static class Extensions
{
public static void Add(this IList<IField> source, SomeParameter value)
{
}
}
我可以做
IList<IField> AllFields = new List<IField>();
AllFields.Add(SomeProperty = new IntField(){});
AllFields.Add(SomeProperty2 = new DecimalField(){});
我忘了加。 SomeProperty和SomeProperty的类型为int和小数
答案 0 :(得分:0)
您可以为此使用泛型。像下面这样的东西就足够了:
public static class Extensions
{
public static void Add<T>(this IList<T> source, SomeParameter value)
where T : IField, new()
{
}
}
本质上,您定义了一个通用方法,该通用方法的唯一通用参数T
应该具有无参数构造函数(where T : new()
)并实现接口IField
。
这样做,您可以编写如下内容:
IList<IField> AllFields = new List<IField>();
AllFields.Add(new IntField(){});
AllFields.Add(new DecimalField(){});
您也可能会遇到类似以下的内容:
IField SomeProperty;
IField SomeProperty2;
IList<IField> AllFields = new List<IField>();
AllFields.Add(SomeProperty = new IntField(){});
AllFields.Add(SomeProperty2 = new DecimalField(){});
但是,从您描述的目的来看,我没有看到此用法。