在项目外部包含具有其他功能的类

时间:2016-11-01 15:26:13

标签: c# oop design-patterns c#-6.0

我在Project1类库中有一个类

class MyClass
{

[CustomAttribute]
public string prop1 {get;set;}

public string prop2 {get;set;}

}

我有:CustomAttribute取决于我不希望在MyClass中包含的第三方库。

我是否有办法将CustomAttribute MyClass prop1project1一起包裹在project2以外的新包装Project1Protected Sub btnUpload_Click(sender As Object, e As EventArgs) Handles btnUpload.Click Try Dim posFile As HttpPostedFile = Nothing posFile = MyFile.PostedFile Dim strFileName As String = "" strFileName = posFile.FileName Dim ext As String = "" Dim fileName As String = "" ext = System.IO.Path.GetExtension(strFileName) fileName = "Vid_" + Now().ToString("yyyyMMddHHmmsss") & ext If MyFile.PostedFile.FileName = "" Then lblMsg.Text = "Please select a file to upload." lblMsg.Visible = True lblMsg.CssClass = "error" Else Dim fileBytes As Byte() = Nothing Using fileStream As New StreamReader(posFile.InputStream) fileBytes = Encoding.UTF8.GetBytes(fileStream.ReadToEnd()) fileStream.Close() End Using Try Dim ftp As String = System.Configuration.ConfigurationManager.AppSettings("FtpMediaServerURL") //ftp://www.server.com Dim ftpFolder As String = "/media/" Dim request As FtpWebRequest = DirectCast(WebRequest.Create(ftp & ftpFolder & fileName), FtpWebRequest) request.Method = WebRequestMethods.Ftp.UploadFile request.Credentials = New NetworkCredential(System.Configuration.ConfigurationManager.AppSettings("FtpMediaServerUserName"), System.Configuration.ConfigurationManager.AppSettings("FtpMediaServerPassword")) request.ContentLength = fileBytes.Length request.UsePassive = True request.KeepAlive = False request.UseBinary = True request.ServicePoint.ConnectionLimit = fileBytes.Length request.EnableSsl = False Using requestStream As Stream = request.GetRequestStream() requestStream.Write(fileBytes, 0, fileBytes.Length) requestStream.Close() End Using Dim response As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse) response.Close() lblMsg.Text = "Your file has been uploaded successfully." lblMsg.Visible = True lblMsg.CssClass = "confirmation" Catch ex As Exception lblMsg.Text = "An Error occured while uploading your file. Please try again." lblMsg.Visible = True lblMsg.CssClass = "error" End Try End If Catch ex As Exception //Handle Exception End Try End Sub

1 个答案:

答案 0 :(得分:3)

如果你打算让一个project2暴露另一个类,你总是可以将该属性设置为virtual并在project2类中重写它(一个继承自project1类的类。

项目1

namespace Project1
{
    public class MyClass
    {
        public virtual string prop1 { get; set; }

        public string prop2 { get; set; }
    }
}

项目2

namespace Project2
{
    public class MyClass2 : Project1.MyClass
    {
        [CustomAttribute]
        public override string prop1 { get; set; }

        public string prop2 { get; set; }
    }
}