2011-05-16 81 views
-1

所以我想打開動態類是類似的東西:如何在「使用」定義部分中將靜態類打開爲靜態?

using System ... 
... 
using System.Windows.Forms; 
using core = new myNamespace.myClass(); // Sure it doesn't work but how to realize it ? 

當我做

使用myNamespace.myClass();我不能使用它,因爲myClass是動態的,但我希望它創建,因爲這個類創建並正在處理它。我想有機會varables/MyClass的方法aslike從這個類,像

core.X必須爲X.

也許我只是想類似的接口相同,但作爲一類。

好,我會盡量正是我想解釋一下:

比如我已經得到了部分課程,而且每一個有2個文件!和...第二個文件的內容是相同的。我如何爲所有部分類使用一個文件?像一個模塊,但沒有前綴!

,所以我知道我的英語是不完美的,我會加一個代碼示例:

public partial class FRIIB : Form 
{ 
    private string x = username; 
} 

public partial class FRIIB : Form 
{ 
    private string username = "hi"; 
} 

public partial class LOLO : Form 
{ 
    private string x = username; 
    // I don't want to create another file with "username" definition 
} 

我想使用Mixin ...它看起來就像正是我想要得到。

+0

你的代碼內使用using語句混亂的(這保證的Dispose()被調用)?因爲你試圖做的事情是不可能的。 – SirViver 2011-05-16 10:54:56

+1

你想創建myClass的別名嗎? – 2011-05-16 10:54:57

+0

你希望實現什麼?你爲什麼想這樣做? – 2011-05-16 10:55:21

回答

2

一個using語句需要是單一方法的上下文/範圍內。

如果您不能將範圍限制爲某個方法,則需要手動處理該範圍,通常是在對象上實現IDisposable,然後在Dispose()中執行處理。有時(但很少),你可能還想要一個終結器來捕獲未收集的對象,但重點是:收集非常罕見。

沒有爲處置靜態領域沒有內在機制 - 你不得不添加靜態Release()方法(或類似)的清潔程序退出時調用。

還有一個using別名這看起來有點像你的代碼,但確實完全不相關的東西(它允許你爲一個單一類型的使用替代的名稱,無論是爲了方便或爲了避免歧義,它僅限於單個文件)。

2

如果我理解正確你的問題,那麼你正在尋找的東西是這樣的:

object obj = Activator.CreateInstance(Assembly.LoadFrom("My Assembly").GetType("myNamespace.myClass", true)); 
core = obj as myNamespace.myClass; 

第一條語句動態創建您的自定義類型的一個實例。第二個語句將創建的對象轉換爲您的自定義類型。

此代碼片段僅顯示正向流程,當然,我也推薦在您的代碼中負責流向。

我希望這有助於:-)