Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/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
C# 如何映射两个不同的接口,使一个接口值自动更改,另一个接口值应得到反映_C#_Asp.net Core_.net Core_Automapper_Lamar - Fatal编程技术网

C# 如何映射两个不同的接口,使一个接口值自动更改,另一个接口值应得到反映

C# 如何映射两个不同的接口,使一个接口值自动更改,另一个接口值应得到反映,c#,asp.net-core,.net-core,automapper,lamar,C#,Asp.net Core,.net Core,Automapper,Lamar,我有一个内核,其中接口声明为 public interface IRequestProvider { int SomeId { get; set; } } 实现也在同一层中定义 然后我有另一层Repo层,在其中我调用另一个外部nuget包,称为DataAccess层 我在其中声明 public interface IRequestProvider { int SomeId { get; set; } int

我有一个内核,其中接口声明为

    public interface IRequestProvider
    {
        int SomeId { get; set; }
    }
实现也在同一层中定义

然后我有另一层Repo层,在其中我调用另一个外部nuget包,称为DataAccess层

我在其中声明

    public interface IRequestProvider
    {
        int SomeId { get; set; }
        int SomeOtherId { get; set; }
    }
所以在核心层和数据访问层中,我定义了IRequestProvider

拉马尔码

 public static class SomeRegistry
    {
        public static void RegisterDISome(this ServiceRegistry services, IConfigurationRoot configurationRoot)
        {

            services.For<IRequestProvider>().Use<RequestProvider>().Scoped();

            services.For<DataAccessInterfaces.IRequestProvider>().Use<DataAccessModel.RequestProvider>().Scoped();

        }
    }

我正在寻找一种解决方案,以便在某些内容发生更改时自动反映更改,而无需调用map()

IRequestProvider
的实现中使用属性设置器如何为您调用映射器?属性getter和setter可以用来做的不仅仅是设置一个私有备份字段。例如:

public class RequestProvider : IRequestProvider
{
    private readonly _mappingProvider;
    private int _someId;

    public RequestProvider(IDomainToRepoMappingRequestProvider mappingProvider)
    {
        _mappingProvider = mappingProvider
    }

    public int SomeId
    {
        get;
        set 
        {
            _someId = value;
            _mappingProvider.Map();
        }
    }
}

IRequestProvider
的实现中使用一个属性设置器来为您调用映射器怎么样?属性getter和setter可以用来做的不仅仅是设置一个私有备份字段。例如:

public class RequestProvider : IRequestProvider
{
    private readonly _mappingProvider;
    private int _someId;

    public RequestProvider(IDomainToRepoMappingRequestProvider mappingProvider)
    {
        _mappingProvider = mappingProvider
    }

    public int SomeId
    {
        get;
        set 
        {
            _someId = value;
            _mappingProvider.Map();
        }
    }
}

我可以这样做。。。但我正在寻找通过依赖注入的方法,我不确定我是否理解您当时试图实现的目标。根据我的理解,您希望使用自动映射器将对IRequestProvider对象属性的更改反映到另一个DataAccess.IRequestProvider类型的对象。现在,每次修改源对象时都必须调用映射器。您希望实现自动化,这可以通过在源属性的设置器中调用映射器来实现。但是这与DI没有任何关系,除了连接所有东西。DI并不意味着要在层之间进行数据映射。至少就我所知…我可以这样做。。。但我正在寻找通过依赖注入的方法,我不确定我是否理解您当时试图实现的目标。根据我的理解,您希望使用自动映射器将对IRequestProvider对象属性的更改反映到另一个DataAccess.IRequestProvider类型的对象。现在,每次修改源对象时都必须调用映射器。您希望实现自动化,这可以通过在源属性的设置器中调用映射器来实现。但是这与DI没有任何关系,除了连接所有东西。DI并不意味着要在层之间进行数据映射。至少据我所知。。。
public class RequestProvider : IRequestProvider
{
    private readonly _mappingProvider;
    private int _someId;

    public RequestProvider(IDomainToRepoMappingRequestProvider mappingProvider)
    {
        _mappingProvider = mappingProvider
    }

    public int SomeId
    {
        get;
        set 
        {
            _someId = value;
            _mappingProvider.Map();
        }
    }
}