(IA && IB)Activator.CreateInstance(type);
Unable to cast object of type 'Testing.Table' to type 'Interfaces.ITable'.
public static object Load(string pathToDLL, Type seekingInterface, string[] parameters)
{
object result = null;
try
{
Type targetType = null;
Assembly dll = Assembly.LoadFrom(pathToDLL);
foreach (Type type in dll.GetTypes())
{
if (type.GetInterface(seekingInterface.Name) != null)
{
targetType = type;
}
}
result = Activator.CreateInstance(targetType, parameters);
}
catch (Exception ex)
{
throw ex;
}
return result;
}
object a = Plugins.Load (DLLs[0], typeof(ITable), new string[] { path });
//в этом цикле просто решил проверить есть ли там вообще интерфейс ITable
foreach (Type aa in a.GetType().GetInterfaces())
{
Console.WriteLine(aa); //и он тут и правда есть
}
ITable table = (ITable)a; //а вот тут происходит ошибка кастинга
string path = @"Dialogs.tbl";
Assembly a = Assembly.LoadFrom(@"TableBasic.dll");
Type someType = null;
foreach (Type t in a.GetTypes())
{
foreach (Type iT in t.GetInterfaces())
{
if (iT == typeof(ITable))
{
someType = t;
break;
}
}
if (someType != null)
{
break;
}
}
if (someType == null)
{
throw new Exception();
}
ITable obj = (ITable)Activator.CreateInstance(someType, path);
Console.WriteLine(obj.GetChar(0x0b));
interface ITable
{
string Name { get; }
string GetChar(int _value);
int? GetValue(string _char);
}
string path = @"Dialogs.tbl";
Assembly asm = Assembly.LoadFrom(@"TableBasic.dll");
Type type = asm.GetType("Table.Table");
var table = (ITable)Activator.CreateInstance(type, path);
Console.WriteLine(table.GetChar(0x0b));
Я почитал как реализуют внешние звуковые карты на STM32, это что-то похожее вроде, по сути тоже по USB транслируется звук, только вывести его надо не на колонки, а по USB, предварительно обработав.
Буду копать в этом направлении на досуге. Спасибо за ответ!
А так конечно, разумнее выглядит приобретение микрофона с XLR и какой-нибудь хорошей звуковой карты с продвинутым и эффективным ПО.