0
A
回答
2
是的,有一種偷偷摸摸的方式來做到這一點。祕密醬是FormatterServices.GetUninitializedObject它將分配一個實例,但不運行構造函數。您可以通過反射設置字段和屬性,然後運行構造函數。
一個簡單的例子:
class Program
{
static void Main(string[] args)
{
object obj = FormatterServices.GetUninitializedObject(typeof(A));
obj.GetType().GetProperty("I").SetValue(obj, 1);
obj.GetType().GetConstructor(Type.EmptyTypes).Invoke(obj, null);
Console.WriteLine("Done");
}
}
class A
{
public A()
{
if (I != 0)
{
Console.WriteLine("Who set me? I = {0}", I);
}
}
public int I { get; set; }
}
+0
你是唯一瞭解我的問題的人。 非常感謝,這正是我想要的。 – Junior
2
如果你指的是一個字段或屬性就是非靜態,答案是否定的。
在構造函數被調用之前,您實際上並沒有該類的實例,所以您將不會有任何實例來設置該字段或屬性。
但是,如果你只是想提供一個類的默認值。您可以通過在字段或屬性聲明之後添加默認分配來完成此操作。
像這樣;
public class MyClass
{
public string MyString { get; set; } = "Default Value";
public MyClass()
{
}
}
現在,MyClass的每個實例都有一個屬性MyString,其值爲「默認值」,直到它被重新分配爲止。
+0
謝謝,但你不明白我的問題。他明白,看看邁克的迴應。 – Junior
相關問題
- 1. 設置屬性之前的Spring調用對象構造函數
- 2. 工廠或構造函數 - 在哪裏設置對象屬性?
- 3. 在構造函數中爲我設置共享屬性值VB.NET
- 4. ''''或'...'在''之前。''在構造
- 5. 在父構造函數之前調用子類構造函數
- 6. 屬性構造函數的默認值?
- 7. php對象在構造函數中定義和設置屬性
- 8. 如何在EC6上設置構造函數的靜態屬性
- 9. 每個註釋在構造函數後自動設置屬性
- 10. flash as3在構造函數之前或之後定義變量?
- 11. Grails構造函數 - 設置屬性與映射參數
- 12. 在鏈式構造函數中設置只讀字段
- 13. viewDidLoad在構造函數之前調用
- 14. 私有字段vs構造函數中的屬性
- 15. 首選方法來設置只得到屬性值:構造VS支持字段
- 16. C#設置屬性/字段值爲none
- 17. 如何在結構體的構造函數中設置自動屬性?
- 18. PowerMock - 抑制構造函數,但設置專用final字段
- 19. 如何設置構造函數中的屬性值(顯式接口實現)
- 20. 依賴屬性,更改構造函數中的通知和設置值
- 21. 設置來自Ionic 2存儲的構造函數的屬性值
- 22. 在構造函數被調用之前,PDO :: FETCH_CLASS如何填充對象屬性?
- 23. Spring Bean:autowired屬性是在構造函數之前初始化的嗎?
- 24. 如何在構造函數中設置控件屬性(問題與設計師)
- 25. 靜態構造函數之前反射
- 26. 基類構造函數在派生類構造函數之前真的調用
- 27. 如何讓父類構造函數在子構造函數之前運行? (PHP)
- 28. 爲什麼在調用複製構造函數之前調用構造函數?
- 29. C++麻煩在結構構造函數中設置枚舉字段
- 30. 在使用父:: _構造之前訪問父類屬性在父類:: _構造
問yes或no的問題一般是非生產性的誰問的人,誰的答案,誰在未來的讀取。也許編輯你的問題? –
你爲什麼要那樣做? –