结构的app.config语法

时间:2009-11-06 10:09:56

标签: c# asp.net vb.net

我很难为我的程序找出有用的app.config结构。

我正在做的是编写一个Windows服务,它在服务器上监视多个目录,以便上传文件。

我的问题是让我的程序可以配置为n个文件夹 在这n个文件夹中的每个文件夹中,我需要查看不同的文件类型集合 例如folder1:.dwg;      folder2:.dwg; .doc; .xls;

然后当上传新文件时,例如.dwg文件上传到folder1, 然后我需要运行program1将dwg转换为dwf,而program2将dwg转换为.swf。 但只有当filetype是.dwg和folder = folder1

时才是这样

如果将.dwg上传到例如folder2,则需要将其转换为pdf

关闭我已经开始在app.config文件中配置这个是这样的:                                                                                                                                                                                                           

            <Folder2 name="C:\inetpub\wwwroot\CAFM\Fotos" filetypes=".dwg;.pdf;">
                <action>
                    <add key="ExecutableAndPath" value="C:\Users\Me\Desktop\verydoc\dwg2vec.exe"/>
                    <add key="AtCommandBegin" value=""/>
                    <add key="AtCommandMiddle" value=""/>
                    <add key="AtCommandEnd" value=""/>
                </action>
            </Folder2>
        </Folders>
    </Raumplaner>


    <DMS>
        <Folders>
            <Folder name="C:\inetpub\wwwroot\CAFM\Dokumente" filetypes=".dwg;.pdf;">
                <action>
                    <add key="ExecutableAndPath" value="C:\Users\Me\Desktop\verydoc\dwg2vec.exe"/>
                    <add key="AtCommandBegin" value=""/>
                    <add key="AtCommandMiddle" value=""/>
                    <add key="AtCommandEnd" value=""/>
                </action>
            </Folder>
        </Folders>
    </DMS>
</Projects>


enter code here

但那不是我想要的。 我很难将它从app.config

中带到可用的地方

1 个答案:

答案 0 :(得分:3)

您的意思是“可以轻松创建配置文件”或“在我的程序中轻松使用”。

我有一个类似的服务,我把它像这样铺设了

<FolderConfiguration>
    <Folders>
        <Folder ImportFolder="c:\Foo"
                FileTypes=".xxx"
                Action="blabla"/>
        <Folder ImportFolder="C:\Bar
                FileTypes="..."/>
    </Folders>
</FolderConfiguration>

代码看起来像这样

public class FolderConfigSection : ConfigurationSection
{
    [ConfigurationProperty("Folders", IsDefaultCollection = true)]
    public FolderConfigCollection Folders {
        get { return (FolderConfigCollection)base["Folders"]; }
    }
}

public class FolderConfigElement : ConfigurationElement {
    private const string ImportFolderConfigName = "ImportFolder";
    private const string FileTypesConfigName = "FileTypes";

    [ConfigurationProperty(ImportFolderConfigName, IsKey = true, IsRequired = true)]
    public string ImportFolder {
        get { return (string)this[ImportFolderConfigName]; } 
        set { this[ImportFolderConfigName] = value; }
    }

    [ConfigurationProperty(FileTypesConfigName, IsRequired = true)]
    public string FileTypes {
        get { return (string)this[FileTypesConfigName]; }
        set { this[FileTypesConfigName] = value; }
    }
}

[ConfigurationCollection(typeof(FolderConfigElement), AddItemName = "Folder",
 CollectionType=ConfigurationElementCollectionType.BasicMap)]
public class FolderConfigCollection : ConfigurationElementCollection
{
    protected override ConfigurationElement CreateNewElement() {
        return new FolderConfigElement();
    }

    protected override object GetElementKey(ConfigurationElement element) {
        return (element as FolderConfigElement).ImportFolder;
    }
}

然后我通过

访问它
      FolderConfigSection folderConfigSection = ConfigurationManager.GetSection("FolderConfiguration") as FolderConfigSection;