在C#中动态更改名称空间

时间:2016-11-04 02:26:26

标签: c# namespaces

我想做这样的事情。如果定义了DEBUG,则命名空间为Test,或命名空间为TestB。请参阅下面的示例代码。我能做到这一点还是你有更好的想法来实现这一目标?提前谢谢!

# if DEBUG
     [SomekindofAttribute(Namespace = "Test")]
 #endif
namespace TestB
 {

     public class Program
     {}
 }

2 个答案:

答案 0 :(得分:4)

为什么不在命名空间声明本身中添加条件?
如果我理解你的问题,那么你可以使用下面的代码。

(DT_DATE)(SUBSTRING(FILE_DATE,1,2) + "-" + 
SUBSTRING(FILE_DATE,4,2) + "-" + SUBSTRING(FILE_DATE,7,2))

请确认这是你想要的。

答案 1 :(得分:1)

你可以这样做:

         JMenuItem mntmOpen = new JMenuItem("Open");
    mntmOpen.setIcon(new ImageIcon(Fucksakes.class.getResource("/Icons/Open.png")));
    mntmOpen.setFont(new Font("Roboto Condensed", Font.PLAIN, 14));
    mnFile.add(mntmOpen);
    mntmOpen.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
        JFileChooser broswer = new JFileChooser();
        int result = broswer.showOpenDialog(contentPane);
        if (result == JFileChooser.APPROVE_OPTION) {
        File selectFile = broswer.getSelectedFile();
        try {
        Scanner sc = new Scanner(selectFile);
        while (sc.hasNext()) {
            lineNo++;
            process(sc.nextLine());
        }
        textArea.append(selectFile + "");
        } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        JOptionPane.showMessageDialog(contentPane, "Cannot Open file");
        }
        }
        }
        });

public static void process(String s) {
    String[] a = s.split(" ");

    // Strings can be used in switch statements in Java 7 and later versions
    try {
        switch (a[0]) {
            case "COLOR":
                currentColor = new Color(Integer.parseInt(a[1]), Integer.parseInt(a[2]), Integer.parseInt(a[3]));
                break;

            default:
                System.out.println("Input Instruction Not Recognized");
        }

虽然这看起来像非常坏主意。使用#if DEBUG namespace TestB #else namespace Test #endif { public class Program { } } 的所有内容也必须为其Program声明执行相同的预处理程序指令。