私はそれが次のコードを使用して、動的にクラスを派生していますから、別のアセンブリから基底クラスの静的メソッドを呼び出すためにしようとしている:動的に実行別のアセンブリ上の派生クラスから基底クラスのメソッド
Assembly executingAssembly = Assembly.GetExecutingAssembly();
Assembly objectAssembly =
Assembly.Load(executingAssembly.GetReferencedAssemblies().
Where(a => a.Name == "WebDelightBLL").FirstOrDefault());
Type myType = objectAssembly.GetType("WebDelightBLL.Ingredient");
MethodInfo myMethod = myType.GetMethod("GetAll", BindingFlags.Public | BindingFlags.Static);
object myInstance = Activator.CreateInstance(myType);
dgvResultsRES.DataSource = myMethod.Invoke(myInstance, null);
コードでDLL次
public class BaseClass<DerivedClass>
{
public static Type MyType()
{
return typeof(DerivedClass);
}
public static string Prefix()
{
return "Sp" + MyType().Name;
}
public static DataTable GetAll()
{
try
{
DataTable dt = GetSP(Connection.connectionString(),
Prefix() + "GetAll", 5);
return dt;
}
catch (Exception)
{
throw;
}
}
}
public class Ingredient : BaseClass<Ingredient>
{
public string SayHello()
{
return "Hello, World!"; //Just to exemplify a point
}
}
しかし、私はいつも、私はノーを取得例えば
は私が呼び出そう「のsayHelloを()」「オブジェクト参照がオブジェクトのインスタンスに設定されていません」を取得エラー。
これも可能ですか?
更新:それは魅力のように働いたクリープによって示されるようにBindingFlags.FlattenHierarchyを追加することにより
。作業コードは次のようになります。
を作成することができます任意のパラメータを持っていないので、あなたは、あなたの質問への答えを作成したい、とあなたのソリューションとしてこれを選択すること:) –
はそれは公平ではないでしょう@Creepが答えを出して解決策として選んだとしたら?これは私の最初のポストです。私はクリープにできるだけ丁寧になりたい、将来の頭痛の多くを保存したいと思います... –
私の悪い - 私はクリープの答えが本質的にソリューションであることを認識していません(あなたの実際のコードベース)。ですから、私は解決策として彼の答えを選ぶことを提案します。 –