c#自定義Attribute獲取接口實(shí)現(xiàn)示例代碼
一般的接口實(shí)現(xiàn)多態(tài)
定義接口
interface Ipeople
{
void say();
}
定義實(shí)現(xiàn)的類
public class man : Ipeople
{
public void say()
{
MessageBox.Show("man");
}
}
public class woman : Ipeople
{
public void say()
{
MessageBox.Show("woman");
}
}
一般實(shí)現(xiàn)的方法

升級(jí)版
添加自定義(這個(gè)網(wǎng)上好多)

實(shí)現(xiàn)類

調(diào)用方法
private static void NewMethod(string tpye)
{
Ipeople ib = null;
var types = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(Ipeople))))
.ToArray();
foreach (var v in types)
{
var attribute = v.GetCustomAttributes(typeof(NameAttribute), false).FirstOrDefault();
if (attribute != null && ((NameAttribute)attribute).Name == tpye)
{
ib = (Ipeople)v.Assembly.CreateInstance(v.FullName);
break;
}
}
if (ib != null) ib.say();
}
這個(gè)可以避免需要維護(hù)swich語句
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
C#實(shí)現(xiàn)延時(shí)并自動(dòng)關(guān)閉MessageBox的方法
這篇文章主要介紹了C#實(shí)現(xiàn)延時(shí)并自動(dòng)關(guān)閉MessageBox的方法,非常實(shí)用的功能,需要的朋友可以參考下2014-08-08
C# 使用Dapper與金倉數(shù)據(jù)庫交互的實(shí)現(xiàn)步驟
本文主要介紹了C# 使用 Dapper 與金倉數(shù)據(jù)庫交互,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-12-12
在.NET?WebService中跨域CORS問題的解決方案
在現(xiàn)代的Web應(yīng)用程序開發(fā)中,跨域資源共享(Cross-Origin?Resource?Sharing,?CORS)問題是開發(fā)者經(jīng)常遇到的一個(gè)挑戰(zhàn),在這篇博客中,我們將深入探討如何在?.NET?WebService?中解決CORS問題,幫助開發(fā)者順利實(shí)現(xiàn)跨域請(qǐng)求,需要的朋友可以參考下2024-05-05
C#代碼實(shí)現(xiàn)創(chuàng)建帶結(jié)構(gòu)標(biāo)簽的PDF文檔
帶標(biāo)簽的?PDF(也稱為?PDF/UA)是一種包含結(jié)構(gòu)化標(biāo)簽樹的?PDF?文檔,本文將介紹如何使用?Spire.PDF?for?.NET,在?C#?和?VB.NET?中從零開始創(chuàng)建一個(gè)帶標(biāo)簽的?PDF?文檔,有需要的可以了解下2026-03-03
C#使用DateTime獲取日期和時(shí)間的實(shí)現(xiàn)
在C#中,DateTime類是用來處理日期和時(shí)間的類,它具有許多屬性和方法,用于操作和獲取日期和時(shí)間的不同部分,本文就來介紹一下C#使用DateTime獲取,感興趣的可以了解一下2023-11-11

