csharp 需要添加引用System.ComponentModel.Composition

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 需要添加引用System.ComponentModel.Composition相关的知识,希望对你有一定的参考价值。

    class Program    {        class ClassA        {            [Import("Name")]            public string Name { get; set; }        }        static void Main(string[] args)        {            ClassA a = new ClassA();            ComposeObjects.ComposeVariables(a, new List<CustomVariable>() { new CustomVariable() { Name = "Name", Value = "1" } });            Console.WriteLine(a.Name);        }    }
    public class CustomVariable    {        public string Name { get; set; }        public object Value { get; set; }    }    public static class ComposeObjects    {        public static void ComposeVariables(object obj, List<CustomVariable> pVariables)        {            var container = new CompositionContainer();            Type type = obj.GetType();            foreach (var variabe in pVariables)            {                ComposeExportedValue(container, variabe.Name, variabe.Value);            }            var batch = new CompositionBatch();            batch.AddPart(obj);            container.Compose(batch);        }        private static void ComposeExportedValue(CompositionContainer container, string contractName, object exportedValue)        {            if (container == null)                throw new ArgumentNullException("container");            if (exportedValue == null)                throw new ArgumentNullException("exportedValue");            CompositionBatch batch = new CompositionBatch();            var metadata = new Dictionary<string, object> { { "ExportTypeIdentity", AttributedModelServices.GetTypeIdentity(exportedValue.GetType()) } };            batch.AddExport(new Export(contractName, metadata, () => exportedValue));            container.Compose(batch);        }        private static void ComposeExportedValue(CompositionContainer container, object exportedValue)        {            if (container == null)                throw new ArgumentNullException("container");            if (exportedValue == null)                throw new ArgumentNullException("exportedValue");            ComposeExportedValue(container, AttributedModelServices.GetContractName(exportedValue.GetType()), exportedValue);        }    }

以上是关于csharp 需要添加引用System.ComponentModel.Composition的主要内容,如果未能解决你的问题,请参考以下文章

关于异常Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

csharp 在C#中通过引用传递var

csharp 如何比较字符串(引用)对象的示例。

csharp 如何比较字符串(引用)对象的示例。

csharp 表示永远不会赋值为null的引用类型。

csharp CS:解码引用具有特定编码的可打印文本