Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Serialization 如何在Windsor容器中注册IsorFieldSerializer,以便SolrNet能够获取它_Serialization_Solr_Castle Windsor_Solrnet - Fatal编程技术网

Serialization 如何在Windsor容器中注册IsorFieldSerializer,以便SolrNet能够获取它

Serialization 如何在Windsor容器中注册IsorFieldSerializer,以便SolrNet能够获取它,serialization,solr,castle-windsor,solrnet,Serialization,Solr,Castle Windsor,Solrnet,我试图在发布到Solr时将枚举序列化为它的int值 因此,我已经按照建议实现了一个解决方案。但我似乎可以在容器中注册它,这样SolrNet就可以使用它了 以下是我所拥有的: 尽管序列化程序出现在容器组件列表中,但如果序列化程序未被使用,则它可以正常工作。有什么想法吗 container.Register(Component.For<ISolrFieldSerializer>().ImplementedBy<SolrEnumSerializer>()); S

我试图在发布到Solr时将枚举序列化为它的int值

因此,我已经按照建议实现了一个解决方案。但我似乎可以在容器中注册它,这样SolrNet就可以使用它了

以下是我所拥有的:

尽管序列化程序出现在容器组件列表中,但如果序列化程序未被使用,则它可以正常工作。有什么想法吗

    container.Register(Component.For<ISolrFieldSerializer>().ImplementedBy<SolrEnumSerializer>());
    Startup.Init<SearchBox>("http://10.10.10.10:0000/solr/boxes");

    container.Register(Component.For<ISolrOperations<SearchBox>>()
                          .UsingFactoryMethod(k => ServiceLocator.Current.GetInstance<ISolrOperations<SearchBox>>()));
container.Register(Component.For().ImplementedBy());
Startup.Init(“http://10.10.10.10:0000/solr/boxes");
container.Register(Component.For())
.UsingFactoryMethod(k=>ServiceLocator.Current.GetInstance());

我通过删除默认实现并将其替换为自定义实现对其进行了排序:

Startup.Container.Remove<ISolrFieldSerializer>();

var fieldSerializer = new CustomSerializer();
Startup.Container.Register<ISolrFieldSerializer>(c => fieldSerializer);
Startup.Container.Remove();
var fieldSerializer=新的CustomSerializer();
Startup.Container.Register(c=>fieldSerializer);
自定义Sertializer:

public class CustomSerializer : ISolrFieldSerializer 
    {
        private readonly AggregateFieldSerializer _serializer;

        public CustomSerializer()
        {
            _serializer = new AggregateFieldSerializer(new ISolrFieldSerializer[]
                                                          {
                                                              new MyCustom1Serializer(),
                                                              new MyCustom2Serializer(),
                                                              new CollectionFieldSerializer(this),
                                                              new GenericDictionaryFieldSerializer(this),
                                                              new NullableFieldSerializer(new BoolFieldSerializer()),
                                                              new NullableFieldSerializer(new DateTimeFieldSerializer()),
                                                              //new MoneyFieldSerializer(),
                                                              new FormattableFieldSerializer(),
                                                              new TypeConvertingFieldSerializer(),


                                                          });
        }

        public  bool CanHandleType(Type t)
        {
            return _serializer.CanHandleType(t);
        }

        public IEnumerable<PropertyNode> Serialize(object obj)
        {
            return _serializer.Serialize(obj);
        }
    }
公共类CustomSerializer:IsorFieldSerializer
{
专用只读AggregateFieldSerializer\u serializer;
公共CustomSerializer()
{
_serializer=新的AggregateFieldSerializer(新的ISolrFieldSerializer[]
{
新的MyCustom1Serializer(),
新的MyCustom2Serializer(),
新CollectionFieldSerializer(此),
新的GenericDictionaryFieldSerializer(此),
新的NullableFieldSerializer(新的BoolFieldSerializer()),
新的NullableFieldSerializer(新的DateTimeFieldSerializer()),
//新的MoneyFieldSerializer(),
新FormattableFieldSerializer(),
新的TypeConvertingFieldSerializer(),
});
}
公共布尔CanHandleType(t型)
{
return _serializer.CanHandleType(t);
}
公共IEnumerable序列化(对象obj)
{
返回_serializer.Serialize(obj);
}
}

我通过删除默认实现并将其替换为自定义实现对其进行了排序:

Startup.Container.Remove<ISolrFieldSerializer>();

var fieldSerializer = new CustomSerializer();
Startup.Container.Register<ISolrFieldSerializer>(c => fieldSerializer);
Startup.Container.Remove();
var fieldSerializer=新的CustomSerializer();
Startup.Container.Register(c=>fieldSerializer);
自定义Sertializer:

public class CustomSerializer : ISolrFieldSerializer 
    {
        private readonly AggregateFieldSerializer _serializer;

        public CustomSerializer()
        {
            _serializer = new AggregateFieldSerializer(new ISolrFieldSerializer[]
                                                          {
                                                              new MyCustom1Serializer(),
                                                              new MyCustom2Serializer(),
                                                              new CollectionFieldSerializer(this),
                                                              new GenericDictionaryFieldSerializer(this),
                                                              new NullableFieldSerializer(new BoolFieldSerializer()),
                                                              new NullableFieldSerializer(new DateTimeFieldSerializer()),
                                                              //new MoneyFieldSerializer(),
                                                              new FormattableFieldSerializer(),
                                                              new TypeConvertingFieldSerializer(),


                                                          });
        }

        public  bool CanHandleType(Type t)
        {
            return _serializer.CanHandleType(t);
        }

        public IEnumerable<PropertyNode> Serialize(object obj)
        {
            return _serializer.Serialize(obj);
        }
    }
公共类CustomSerializer:IsorFieldSerializer
{
专用只读AggregateFieldSerializer\u serializer;
公共CustomSerializer()
{
_serializer=新的AggregateFieldSerializer(新的ISolrFieldSerializer[]
{
新的MyCustom1Serializer(),
新的MyCustom2Serializer(),
新CollectionFieldSerializer(此),
新的GenericDictionaryFieldSerializer(此),
新的NullableFieldSerializer(新的BoolFieldSerializer()),
新的NullableFieldSerializer(新的DateTimeFieldSerializer()),
//新的MoneyFieldSerializer(),
新FormattableFieldSerializer(),
新的TypeConvertingFieldSerializer(),
});
}
公共布尔CanHandleType(t型)
{
return _serializer.CanHandleType(t);
}
公共IEnumerable序列化(对象obj)
{
返回_serializer.Serialize(obj);
}
}
尝试在上发帖尝试在上发帖