• 【软件设计】【MEF】export


    Composable Part exports

    [Export]
    public class SomeComposablePart {
      ...
    }

    Property exports

      

    代码
      public class Configuration
      {
        [Export(
    "Timeout")]
        
    public int Timeout
        {
          
    get { return int.Parse(ConfigurationManager.AppSettings["Timeout"]); }
        }
      }
      [Export]
      
    public class UsesTimeout
      {
        [Import(
    "Timeout")]
        
    public int Timeout { getset; }
      }

    Method exports

      

    代码
      public class MessageSender
      {
        [Export(
    typeof(Action<string>))]
        
    public void Send(string message)
        {
          Console.WriteLine(message);
        }
      }

      [Export]
      
    public class Processor
      {
        [Import(
    typeof(Action<string>))]
        
    public Action<string> MessageSender { getset; }

        
    public void Send()
        {
          MessageSender(
    "Processed");
        }
      }
    代码
      public class MessageSender
      {
        [Export(
    "MessageSender")]
        
    public void Send(string message)
        {
          Console.WriteLine(message);
        }
      }

      [Export]
      
    public class Processor
      {
        [Import(
    "MessageSender")]
        
    public Action<string> MessageSender { getset; }

        
    public void Send()
        {
          MessageSender(
    "Processed");
        }
      }

    Inherited Exports

    [InheritedExport]
    public interface ILogger {
      
    void Log(string message);
    }

    public class Logger : ILogger {
      
    public void Log(string message);
    }
  • 相关阅读:
    java中变量的内存分配
    类加载器的双亲委派机制
    缓存行对齐
    缓存一致性与MESI协议
    Mysql优化之join优化
    MySQL crc32 & crc64函数 提高字符串查询效率
    线程不安全
    学习爱上 systemd
    Ubuntu如何备份和恢复系统
    redis报错overcommit_memory is set to 0
  • 原文地址:https://www.cnblogs.com/ningth/p/1735006.html
Copyright © 2020-2023  润新知