Если типом всегда является IInstructionWithOperand
, вы можете объявить
IInstructionWithOperand instruction;
, а затем присвоить его точно так же, как вы:
instruction = (IInstructionWithOperand)dynamicObj;
Или предположим, что весь код вышенаходится в функции.Вы можете сделать IInstructionWithOperand
типом возвращаемого значения функции, например
IInstructionWithOperand GetInstruction(string opcode)
{
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
Console.WriteLine(operands[0]);
foreach (Assembly a in assemblies)
{
Type[] typeArray = a.GetTypes();
foreach (Type type in typeArray)
{
if (opcode.Equals(type.Name, StringComparison.InvariantCultureIgnoreCase))
{
Object dynamicObj = Activator.CreateInstance(type);
return (IInstructionWithOperand)dynamicObj;
}
}
}
}
Вам не нужно объявлять переменную внутри функции.Когда вы вызываете функцию, она будет выглядеть следующим образом:
var instruction = GetInstruction(someOpCode);
и объявленный тип instruction
будет IInstructionWithOperand
.
В любом случае, это хорошая идея, потому что онахраните части вашего кода отдельно.Одна функция создает экземпляр класса, который реализует IInstructionWithOperand
, а другая функция (или класс) использует его для выполнения чего-либо.