所以,這是交易。我有一個名爲IBehavior的接口。我的每個實體都有一個變量:private IBehavior _behavior
。每個實體也有一個變量:public string Behavior
。加載我的實體時,字符串是從xml文件填充的。隨後在所有實體上調用名爲init()
的函數。此方法接受字符串並使用以下代碼行調用所需的構造函數:Type.GetType(Behavior).GetConstructor(Type.EmptyTypes).Invoke(null);
。用字符串創建一個對象
不幸的是,Invoke()方法返回Object類型的東西,並且_behavior變量不會在沒有強制轉換的情況下接受它。我試過這種方法: _behavior = (IBehavior)Type.GetType(Behavior).GetConstructor(Type.EmptyTypes).Invoke(null);
。
所有這些都告訴我,我的_bahavior
變量爲空,因此這種情況不會發生。我可能錯誤地使用了GetConstructor()
。有人可以請指點我正確的方向嗎?
初始化函數:
public void Init()
{
if (Behavior == "null" || Behavior == "none")
{
_behavior = null;
return;
}
_behavior = (IBehavior) Type.GetType(Behavior).GetConstructor(Type.EmptyTypes).Invoke(new object(), null);
}
如果需要更多信息,請告訴我您希望看到的內容,然後我將其添加到編輯中。此外,我很抱歉,如果這是一個轉發,但我還沒有發現任何已經解決了我的問題呢。 – user1311199