小编Mik*_*ike的帖子

在运行时更改自定义属性的参数

我需要在运行时更改属性的参数.我将我的问题简化为简单的例子.

属性类:

    [AttributeUsage(AttributeTargets.Property)]
    public class MyAttribute : Attribute
    {
        public string Name { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

简单实体,它使用属性修饰属性:

    public class MyEntity
    {
        [MyAttribute(Name="OldValue1")]
        public string Data1{ get; set; }

        [MyAttribute(Name = "OldValue2")]
        public string Data2 { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

我创建了MyEntity类的实例.我可以更改对象属性的值,但是我不能在对象实体上更改属性的属性Name的值.可能吗?

对象实体的属性值我可以用这部分代码改变:

                entityProp.SetValue(entity,"NewData",null);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何更改对象实体上属性Name的值

这不起作用:

attProp.SetValue(attribute,"NewData",null);
Run Code Online (Sandbox Code Playgroud)

属性的价值名称仍然是原创的.

这是所有测试代码.谢谢你的帮助.

    [TestMethod]
    public  void Test()
    {
        var entity = new MyEntity
                         {
                             Data1 = "OldData",
                             Data2 = "OldData"
                         };

        PropertyInfo[] entityProps = entity.GetType().GetProperties();

        foreach (var entityProp in entityProps)
        {
            var attribute = Attribute.GetCustomAttribute(entityProp, …
Run Code Online (Sandbox Code Playgroud)

c# reflection runtime custom-attributes

12
推荐指数
2
解决办法
2万
查看次数

Parallel.ForEach中的File.Copy

我正在尝试创建一个目录并在一个文件中复制一个文件(pdf)Parallel.ForEach.

下面是一个简单的例子:

    private static void CreateFolderAndCopyFile(int index)
    {
        const string sourcePdfPath = "c:\\testdata\\test.pdf";
        const string rootPath = "c:\\testdata";

        string folderDirName = string.Format("Data{0}", string.Format("{0:00000000}", index));

        string folderDirPath = rootPath + @"\" + folderDirName;

        Directory.CreateDirectory(folderDirPath);

        string desPdfPath = folderDirPath + @"\" + "test.pdf";

        File.Copy(sourcePdfPath, desPdfPath, true);

    }
Run Code Online (Sandbox Code Playgroud)

上述方法创建一个新文件夹并将pdf文件复制到新文件夹.它创建了这个目录树:

TESTDATA
  -Data00000000
      -test.pdf
  -Data00000001
      -test.pdf
....
  -Data0000000N
      -test.pdf
Run Code Online (Sandbox Code Playgroud)

我试着CreateFolderAndCopyFileParallel.ForEach循环中调用该方法.

    private static void Func<T>(IEnumerable<T> docs)
    {
        int index = 0;
        Parallel.ForEach(docs, doc =>
                                   {
                                       CreateFolderAndCopyFile(index);
                                       index++;
                                   });
    }
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,它完成以下错误: …

c# parallel-processing file-copying

8
推荐指数
2
解决办法
7238
查看次数