我需要创建一种处理文件的一般方法。根据文件需要执行的操作,应使用特定的类。我使用ASP和C#。文件被上传后,我将分析文件,创建一个分析结果对象,并向用户显示基于该对象的分析结果。用户读取分析结果,然后继续进行(单击按钮)。如果他愿意,我将采取该分析结果对象并根据该对象执行操作(处理)。我向用户显示了处理结果。
根据某些查询参数(为简单起见),文件应由不同的类处理。处理器需要特定于分析器具体实现的分析结果(分析一个文件的结果可能包括自定义类的列表,不同文件分析的结果可能包含其他特定字段)。处理器需要那些特定于实现的细节才能完成工作。
我尝试创建一般项目,但被卡住了。
工厂中的magicId是一个查询参数,用于指定应使用哪个类来解析/分析文件。
有没有一种方法可以创建一个类的工作工厂,这些工厂都实现一个通用类型的接口?
abstract class AnalysisResult
{
}
interface IAnalyzer<TAnalysisResult>
where TAnalysisResult : AnalysisResult
{
TAnalysisResult PerformAction(string input);
}
class ConcreteAnalysisResult : AnalysisResult {
public int SpecificProperty { get; set; }
}
class ConcreteAnalyzer : IAnalyzer<ConcreteAnalysisResult>
{
public ConcreteAnalysisResult PerformAction(string input)
{
return new ConcreteAnalysisResult() { SpecificProperty = input.Length };
}
}
class AnAnalyzerFactory
{
IAnalyzer<AnalysisResult> CreateByMagicId(int magicId)
{
return new ConcreteAnalyzer();
}
}
声明TAnalysisResult
为协变。有关详细信息,您可以检查协方差和协方差
interface IAnalyzer<out TAnalysisResult> // note out keyword
where TAnalysisResult : AnalysisResult
{
TAnalysisResult PerformAction(string input);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句