将可选参数传递给autofac

我正在尝试使用Autofac并注册下面的类,它接收一个参数作为可选参数(或者更确切地说是null)。 我的课程是:

class BaseSpanRecord : ISpanRecord { public BaseSpanRecord(RecordType recordType, List properties) { RecordType = recordType; Properties = properties; } } 

这里RecordType是一个枚举,而SpanRecordAttribute是一个只有我不想创建任何接口的属性的类。

在构造函数中, RecordTypeProperties是接口ISpanRecord的两个公共属性。这个类可以通过以下方式在程序的不同位置实例化:

 ISpanRecord spanFileRecord = new BaseSpanRecord(recordType, null); 

要么

 ISpanRecord spanFileRecord = new BaseSpanRecord(recordType, recordAttributeList); 

我应该如何尝试在Autofac容器中注册它,以便它可以处理上述两种情况? 或者我应该改变BaseSpanRecord类的编写方式以使其注册更容易?

当使用TypeParameter来解析实例时,只要提供类型信息, null应该没问题。 您不应该在注册时使用UsingConstructor方法。

直接创建TypedParameter实例:

 var recordTypeParam = new TypedParameter(typeof(RecordType), RecordType.Something); var propertiesParam = new TypedParameter(typeof(List), null); var record = container.Resolve(recordTypeParam, propertiesParam); 

使用TypedParameter.From帮助器方法:

 var record = container.Resolve(TypedParameter.From(RecordType.Something), TypedParameter.From((List)null)); 

请注意, nullListList以允许使用helper方法进行类型推断。