1 回答
TA贡献1963条经验 获得超6个赞
接口IFeatureParameters在这里没有附加值。类(或您喜欢的任何类型)是否是将参数传递给功能的有效类型,完全由功能实现决定。每次开发人员对接口进行新的实现时IFeature,他们都会通过填充类型变量来明确指定正确的参数类型T。这足以确保不会将“外来”类型传递到 method 的实现中Apply。
这是一个简单的例子。
public class FeatureParametersA
{
public string SomeText;
}
public class FeatureParametersB
{
public int SomeNumber;
}
我可以让这些类实现一个接口IFeatureParameters,但这不是必需的。
public interface IFeature<T>
{
CustomObject Apply(CustomObject obj, T par);
}
public class FeatureA : IFeature<FeatureParametersA>
{
public CustomObject Apply(CustomObject obj, FeatureParametersA par);
{
obj.Add(par.SomeText);
return obj;
}
}
public class FeatureB : IFeature<FeatureParametersB>
{
public CustomObject Apply(CustomObject obj, FeatureParametersB par);
{
obj.Add(par.SomeNumber.ToString());
return obj;
}
}
请注意每个类如何拥有其自己的专用实现Apply,特定于相关的“参数”类型。一切都是强类型的,因此编译器将阻止任何人尝试将错误的类型传递到Apply.
为了完整性:
public class CustomObject
{
public void Add(string s) { _sb.AppendLine(s); }
private StringBuilder _sb = new StringBuilder();
}
- 1 回答
- 0 关注
- 98 浏览
添加回答
举报